44 lines
1.7 KiB
ReStructuredText
44 lines
1.7 KiB
ReStructuredText
:orphan:
|
|
|
|
Accessing DataLoaders
|
|
=====================
|
|
|
|
In the case that you require access to the :class:`torch.utils.data.DataLoader` or :class:`torch.utils.data.Dataset` objects, DataLoaders for each step can be accessed
|
|
via the trainer properties :meth:`~lightning.pytorch.trainer.trainer.Trainer.train_dataloader`,
|
|
:meth:`~lightning.pytorch.trainer.trainer.Trainer.val_dataloaders`,
|
|
:meth:`~lightning.pytorch.trainer.trainer.Trainer.test_dataloaders`, and
|
|
:meth:`~lightning.pytorch.trainer.trainer.Trainer.predict_dataloaders`.
|
|
|
|
.. code-block:: python
|
|
|
|
dataloaders = trainer.train_dataloader
|
|
dataloaders = trainer.val_dataloaders
|
|
dataloaders = trainer.test_dataloaders
|
|
dataloaders = trainer.predict_dataloaders
|
|
|
|
These properties will match exactly what was returned in your ``*_dataloader`` hooks or passed to the ``Trainer``,
|
|
meaning that if you returned a dictionary of dataloaders, these will return a dictionary of dataloaders.
|
|
|
|
Replacing DataLoaders
|
|
---------------------
|
|
|
|
If you are using a :class:`~lightning.pytorch.utilities.CombinedLoader`. A flattened list of DataLoaders can be accessed by doing:
|
|
|
|
.. code-block:: python
|
|
|
|
from lightning.pytorch.utilities import CombinedLoader
|
|
|
|
iterables = {"dl1": dl1, "dl2": dl2}
|
|
combined_loader = CombinedLoader(iterables)
|
|
# access the original iterables
|
|
assert combined_loader.iterables is iterables
|
|
# the `.flattened` property can be convenient
|
|
assert combined_loader.flattened == [dl1, dl2]
|
|
# for example, to do a simple loop
|
|
updated = []
|
|
for dl in combined_loader.flattened:
|
|
new_dl = apply_some_transformation_to(dl)
|
|
updated.append(new_dl)
|
|
# it also allows you to easily replace the dataloaders
|
|
combined_loader.flattened = updated
|