---
myst:
html_meta:
description: Data samplers in PyTorch C++ — RandomSampler, SequentialSampler, DistributedRandomSampler, and StreamSampler.
keywords: PyTorch, C++, sampler, RandomSampler, SequentialSampler, DistributedRandomSampler
---
# Samplers
Samplers control the order in which samples are accessed from a dataset.
They determine the indices that the DataLoader uses to fetch data.
## Sampler Base Class
```{doxygenclass} torch::data::samplers::Sampler
:members:
:undoc-members:
```
## Sequential Sampler
Accesses samples in order from 0 to N-1. Use this for evaluation or when
order matters.
```{doxygenclass} torch::data::samplers::SequentialSampler
:members:
:undoc-members:
```
## Random Sampler
Accesses samples in random order. Use this for training to ensure the model
sees samples in different orders each epoch.
```{doxygenclass} torch::data::samplers::RandomSampler
:members:
:undoc-members:
```
## Distributed Random Sampler
For distributed training, ensures each process gets a different subset of
the data without overlap.
```{doxygenclass} torch::data::samplers::DistributedRandomSampler
:members:
:undoc-members:
```
## Distributed Sampler (Base)
```{doxygenclass} torch::data::samplers::DistributedSampler
:members:
:undoc-members:
```
## Distributed Sequential Sampler
```{doxygenclass} torch::data::samplers::DistributedSequentialSampler
:members:
:undoc-members:
```
## Stream Sampler
```{doxygenclass} torch::data::samplers::StreamSampler
:members:
:undoc-members:
```