pub struct HookedDataLoader<T>where
T: Element,{ /* private fields */ }Expand description
Sampler で選んだサンプルへ transform/collate フックをかけて
バッチ化するローダー(PyTorch DataLoader(sampler=, collate_fn=)
相当。イシュー #2182)。内部に
SamplerDataLoader<TensorDataset<T>> を持つ(合成)。issue の
callback シグネチャ(Tensor 単体)に合わせ TensorDataset<T>
限定とする(タプルデータセットでのサンプル単位フックは対象外。
docs/tensor-core-data-sampler-hooks-decision.md §2.2・§6)。
§処理順(AC-4)
HookedBatches::next は「サンプリング → サンプルごとに transform
→ collate」の順で処理する。transform も collate も未設定なら
Dataset::batch への fast path を通る(コピー 1 回。[Self:: with_transform]/Self::with_collate を一度でも呼ぶと slow
path に切り替わる)。
Implementations§
Source§impl<T> HookedDataLoader<T>where
T: Element,
impl<T> HookedDataLoader<T>where
T: Element,
Sourcepub fn new(
dataset: TensorDataset<T>,
sampler: impl Sampler + 'static,
) -> Result<HookedDataLoader<T>, DataError>
pub fn new( dataset: TensorDataset<T>, sampler: impl Sampler + 'static, ) -> Result<HookedDataLoader<T>, DataError>
SamplerDataLoader::new と同じ契約(タプルではないため
validate() は常に Ok(()))。
Sourcepub fn with_transform(
self,
f: impl Fn(Tensor<T>) -> Tensor<T> + Send + Sync + 'static,
) -> HookedDataLoader<T>
pub fn with_transform( self, f: impl Fn(Tensor<T>) -> Tensor<T> + Send + Sync + 'static, ) -> HookedDataLoader<T>
builder: infallible な transform を設定する(issue の字句どおり
のシグネチャ)。内部では Ok で包んで保持する。
Sourcepub fn with_try_transform(
self,
f: impl Fn(Tensor<T>) -> Result<Tensor<T>, DataError> + Send + Sync + 'static,
) -> HookedDataLoader<T>
pub fn with_try_transform( self, f: impl Fn(Tensor<T>) -> Result<Tensor<T>, DataError> + Send + Sync + 'static, ) -> HookedDataLoader<T>
builder: fallible な transform を設定する。
Sourcepub fn with_collate(
self,
f: impl Fn(&[Tensor<T>]) -> Tensor<T> + Send + Sync + 'static,
) -> HookedDataLoader<T>
pub fn with_collate( self, f: impl Fn(&[Tensor<T>]) -> Tensor<T> + Send + Sync + 'static, ) -> HookedDataLoader<T>
builder: infallible な collate を設定する(issue の字句どおりの シグネチャ)。
Sourcepub fn with_try_collate(
self,
f: impl Fn(&[Tensor<T>]) -> Result<Tensor<T>, DataError> + Send + Sync + 'static,
) -> HookedDataLoader<T>
pub fn with_try_collate( self, f: impl Fn(&[Tensor<T>]) -> Result<Tensor<T>, DataError> + Send + Sync + 'static, ) -> HookedDataLoader<T>
builder: fallible な collate を設定する。
Sourcepub fn dataset(&self) -> &TensorDataset<T>
pub fn dataset(&self) -> &TensorDataset<T>
保持するデータセットへの参照。
Sourcepub fn into_dataset(self) -> TensorDataset<T>
pub fn into_dataset(self) -> TensorDataset<T>
内部の dataset を取り出す。
Sourcepub fn num_batches(&self) -> Option<usize>
pub fn num_batches(&self) -> Option<usize>
1 epoch あたりのバッチ数(Sampler::num_batches が Some を
返す場合のみ)。
Sourcepub fn iter(&mut self) -> HookedBatches<'_, T> ⓘ
pub fn iter(&mut self) -> HookedBatches<'_, T> ⓘ
1 epoch 分のイテレータを返す。
Trait Implementations§
Auto Trait Implementations§
impl<T> !RefUnwindSafe for HookedDataLoader<T>
impl<T> !Sync for HookedDataLoader<T>
impl<T> !UnwindSafe for HookedDataLoader<T>
impl<T> Freeze for HookedDataLoader<T>
impl<T> Send for HookedDataLoader<T>
impl<T> Unpin for HookedDataLoader<T>
impl<T> UnsafeUnpin for HookedDataLoader<T>where
SamplerDataLoader<TensorDataset<T>>: UnsafeUnpin,
Option<Box<dyn Fn(Tensor<T>) -> Result<Tensor<T>, DataError> + Send + Sync>>: UnsafeUnpin,
Option<Box<dyn Fn(&[Tensor<T>]) -> Result<Tensor<T>, DataError> + Send + Sync>>: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more