--- myst: html_meta: description: Dataset classes in PyTorch C++ — Dataset, MapDataset, StreamDataset, and built-in datasets like MNIST. keywords: PyTorch, C++, Dataset, MapDataset, StreamDataset, MNIST, data --- # Datasets The dataset abstraction defines how to access individual samples in your data. All datasets inherit from `Dataset` and must implement `get()` and `size()`. ## Dataset Base Class ```{doxygenclass} torch::data::datasets::Dataset :members: :undoc-members: ``` ```{doxygenclass} torch::data::datasets::BatchDataset :members: :undoc-members: ``` ## StatefulDataset A dataset that manages its own state across batches (e.g., position in a stream). Unlike `Dataset`, it produces batches directly without external samplers. ```{doxygenclass} torch::data::datasets::StatefulDataset :members: :undoc-members: ``` ## ChunkDataReader Interface for reading chunks of data from a data source. Used with `ChunkDataset` for large-scale data loading. ```{doxygenclass} torch::data::datasets::ChunkDataReader :members: :undoc-members: ``` ## Custom Dataset Example ```cpp class CustomDataset : public torch::data::datasets::Dataset { public: explicit CustomDataset(const std::string& root) { // Load data from root directory } torch::data::Example<> get(size_t index) override { return {images_[index], labels_[index]}; } torch::optional size() const override { return images_.size(0); } private: torch::Tensor images_, labels_; }; ``` ## MapDataset ```{doxygenclass} torch::data::datasets::MapDataset :members: :undoc-members: ``` ## ChunkDataset ```{doxygenclass} torch::data::datasets::ChunkDataset :members: :undoc-members: ``` ## SharedBatchDataset ```{doxygenclass} torch::data::datasets::SharedBatchDataset :members: :undoc-members: ``` ## Built-in Datasets ### MNIST ```{doxygenclass} torch::data::datasets::MNIST :members: :undoc-members: ``` **Example:** ```cpp auto dataset = torch::data::datasets::MNIST("./data") .map(torch::data::transforms::Normalize<>(0.1307, 0.3081)) .map(torch::data::transforms::Stack<>()); ``` ## Example Struct ```{doxygenstruct} torch::data::Example :members: :undoc-members: ```