Rate this Page

Program Listing for File stream.h#

Return to documentation for file (torch/csrc/api/include/torch/data/samplers/stream.h)

#pragma once

#include <torch/csrc/Export.h>
#include <torch/data/samplers/base.h>
#include <torch/data/samplers/custom_batch_request.h>
#include <torch/types.h>

#include <cstddef>

namespace torch::serialize {
class InputArchive;
class OutputArchive;
} // namespace torch::serialize

namespace torch::data::samplers {

struct TORCH_API BatchSize : public CustomBatchRequest {
  explicit BatchSize(size_t size);
  size_t size() const noexcept override;
  operator size_t() const noexcept;
  size_t size_;
};

class TORCH_API StreamSampler : public Sampler<BatchSize> {
 public:
  explicit StreamSampler(size_t epoch_size);

  void reset(std::optional<size_t> new_size = std::nullopt) override;

  std::optional<BatchSize> next(size_t batch_size) override;

  void save(serialize::OutputArchive& archive) const override;

  void load(serialize::InputArchive& archive) override;

 private:
  size_t examples_retrieved_so_far_ = 0;
  size_t epoch_size_;
};

} // namespace torch::data::samplers