def __call__(self,
dataset: Dataset,
num_epochs: int = None,
shuffle: bool = True,
cuda_device: int = -1,
for_training: bool = True) -> Generator[Dict[str, Union[numpy.ndarray,
Dict[str, numpy.ndarray]]],
None, None]:
"""
Returns a generator that yields batches over the given dataset, forever.
Parameters
----------
dataset : ``Dataset``
num_epochs : ``int``, optional (default=``None``)
How times should we iterate over this dataset? If ``None``, we will iterate over it
forever.
shuffle : ``bool``, optional (default=``True``)
If ``True``, we will shuffle the instances in ``dataset`` before constructing batches
and iterating over the data.
cuda_device : ``int``
If cuda_device >= 0, GPUs are available and Pytorch was compiled with CUDA support, the
tensor will be copied to the cuda_device specified.
for_training : ``bool``, optional (default=``True``)
If ``False``, we will pass the ``volatile=True`` flag when constructing variables,
which disables gradient computations in the graph. This makes inference more efficient
(particularly in memory usage), but is incompatible with training models.
"""
if num_epochs is None:
while True:
yield from self._yield_one_epoch(dataset, shuffle, cuda_device, for_training)
else:
for _ in range(num_epochs):
yield from self._yield_one_epoch(dataset, shuffle, cuda_device, for_training)
评论列表
文章目录