o # ik@snddlmZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z dgZGdddeZdS) ) annotationsN) DataLoader)Dataset)get_track_meta)list_data_collateset_rndworker_init_fnrcs$eZdZdZd d fd d ZZS) ra Provides an iterable over the given `dataset`. It inherits the PyTorch DataLoader and adds enhanced `collate_fn` and `worker_fn` by default. Although this class could be configured to be the same as `torch.utils.data.DataLoader`, its default configuration is recommended, mainly for the following extra features: - It handles MONAI randomizable objects with appropriate random state managements for deterministic behaviour. - It is aware of the patch-based transform (such as :py:class:`monai.transforms.RandSpatialCropSamplesDict`) samples for preprocessing with enhanced data collating behaviour. See: :py:class:`monai.transforms.Compose`. For more details about :py:class:`torch.utils.data.DataLoader`, please see: https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader. For example, to construct a randomized dataset and iterate with the data loader: .. code-block:: python import torch from monai.data import DataLoader from monai.transforms import Randomizable class RandomDataset(torch.utils.data.Dataset, Randomizable): def __getitem__(self, index): return self.R.randint(0, 1000, (1,)) def __len__(self): return 16 dataset = RandomDataset() dataloader = DataLoader(dataset, batch_size=2, num_workers=4) for epoch in range(2): for i, batch in enumerate(dataloader): print(epoch, i, batch.data.numpy().flatten().tolist()) Args: dataset: dataset from which to load the data. num_workers: how many subprocesses to use for data loading. ``0`` means that the data will be loaded in the main process. (default: ``0``) collate_fn: default to :py:func:`monai.data.utils.list_data_collate`. worker_init_fn: default to :py:func:`monai.data.utils.worker_init_fn`. kwargs: other parameters for PyTorch DataLoader. rdatasetr num_workersintreturnNonec s|dkr1|ddurtjjn|d}|}tjdtjdj|d}t |t || |d|vr9t |d<d|vrAt |d<d|vrS|dd krStsStd tjd||d |dS) Nr generator)dtype)r collate_fnrmultiprocessing_contextspawnaPlease be aware: Return type of the dataloader will not be a Tensor as expected but a MetaTensor instead! This is because 'spawn' creates a new process where _TRACK_META is initialized to True again. Context:_TRACK_META is set to False and multiprocessing_context to spawn)r r )gettorchrandomdefault_generator initial_seedemptyint64random_itemrr manual_seedrrrwarningswarnsuper__init__)selfr r kwargs_gZ init_seed_seed __class__rW/home/dell461/cl/sdc2/last_ska_mid/HISourceFinder-master-l/src/monai/data/dataloader.pyr!Os$  zDataLoader.__init__)r)r rr r r r )__name__ __module__ __qualname____doc__r! __classcell__rrr&r(rs4) __future__rrrtorch.utils.datarZ_TorchDataLoaderrZmonai.data.meta_objrZmonai.data.utilsrrr__all__rrrr(s