class_docstr: Base class for all Gaussian Process estimators.
  
  Most notably, a GPyTorch compatible criterion and likelihood should be
  provided.
class_docstr_tok: ["Base","class","for","all","Gaussian","Process","estimators",".","Most","notably",",","a","GPyTorch","compatible","criterion","and","likelihood","should","be","provided","."]
docstr: Yield outputs of module forward calls on each batch of data.
  The storage device of the yielded tensors is determined
  by the ``device`` parameter.
  
  Parameters
  ----------
  X : input data, compatible with skorch.dataset.Dataset
    By default, you should be able to pass:
  
      * numpy arrays
      * torch tensors
      * pandas DataFrame or Series
      * scipy sparse CSR matrices
      * a dictionary of the former three
      * a list/tuple of the former three
      * a Dataset
  
    If this doesn't work with your data, you have to pass a
    ``Dataset`` that can deal with the data.
  
  training : bool (default=False)
    Whether to set the module to train mode or not.
  
  device : string (default='cpu')
    The device to store each inference result on.
    This defaults to CPU memory since there is genereally
    more memory available there. For performance reasons
    this might be changed to a specific CUDA device,
    e.g. 'cuda:0'.
  
  Yields
  ------
  yp : torch tensor
    Result from a forward call on an individual batch.
docstr_tok: ["Yield","outputs","of","module","forward","calls","on","each","batch","of","data",".","The","storage","device","of","the","yielded","tensors","is","determined","by","the","``","device","``","parameter",".","Parameters","--","--","--","--","--","X",":","input","data",",","compatible","with","skorch.dataset.Dataset","By","default",",","you","should","be","able","to","pass",":","*","numpy","arrays","*","torch","tensors","*","pandas","DataFrame","or","Series","*","scipy","sparse","CSR","matrices","*","a","dictionary","of","the","former","three","*","a","list\/tuple","of","the","former","three","*","a","Dataset","If","this","does","n't","work","with","your","data",",","you","have","to","pass","a","``","Dataset","``","that","can","deal","with","the","data",".","training",":","bool","(","default=False",")","Whether","to","set","the","module","to","train","mode","or","not",".","device",":","string","(","default='cpu","'",")","The","device","to","store","each","inference","result","on",".","This","defaults","to","CPU","memory","since","there","is","genereally","more","memory","available","there",".","For","performance","reasons","this","might","be","changed","to","a","specific","CUDA","device",",","e.g",".","'cuda:0","'",".","Yields","--","--","--","yp",":","torch","tensor","Result","from","a","forward","call","on","an","individual","batch","."]
code: def forward_iter(self, X, *args, **kwargs):
      """Yield outputs of module forward calls on each batch of data.
      The storage device of the yielded tensors is determined
      by the ``device`` parameter.
  
      Parameters
      ----------
      X : input data, compatible with skorch.dataset.Dataset
        By default, you should be able to pass:
  
          * numpy arrays
          * torch tensors
          * pandas DataFrame or Series
          * scipy sparse CSR matrices
          * a dictionary of the former three
          * a list/tuple of the former three
          * a Dataset
  
        If this doesn't work with your data, you have to pass a
        ``Dataset`` that can deal with the data.
  
      training : bool (default=False)
        Whether to set the module to train mode or not.
  
      device : string (default='cpu')
        The device to store each inference result on.
        This defaults to CPU memory since there is genereally
        more memory available there. For performance reasons
        this might be changed to a specific CUDA device,
        e.g. 'cuda:0'.
  
      Yields
      ------
      yp : torch tensor
        Result from a forward call on an individual batch.
  
      """
      # GPyTorch caches a couple things that don't depend on the test points
      # the first time a prediction is made so that the next time a prediction
      # is made, it doesn't have O(n^3) complexity. These caches get deleted
      # in some cases, like if the model gets put back in training mode, but
      # forward_iter doesn't do that, so it's okay.
      with gpytorch.settings.fast_pred_var():
          return super().forward_iter(X, *args, **kwargs)
  
imports: import pickle
  import re
  import gpytorch
  import numpy
  import torch
  from skorch.net import NeuralNet
  from skorch.dataset import ValidSplit
  from skorch.dataset import unpack_data
  from skorch.callbacks import EpochScoring
  from skorch.callbacks import EpochTimer
  from skorch.callbacks import PassthroughScoring
  from skorch.callbacks import PrintLog
  from skorch.utils import check_is_fitted
  from skorch.utils import get_dim
  from skorch.utils import is_dataset
  from skorch.utils import to_numpy
  from skorch.utils import to_tensor
label_desc: Use image node_id 8 for calling the GPBase obj's underlying member method code with example usage: obj.forward_iter(X) and returns: super