pub trait Collate<T> {
    type Output;

    // Required method
    fn collate(&self, batch: Vec<T>) -> Self::Output;
}
Expand description

Any collate gather samples from one batch together.

A DefaultCollate struct is provided which will cover most of the use cases.

This trait is used instead of Fn because we cannot currently impl Fn* on struct on stable rust.

Required Associated Types§

source

type Output

The type of the collate function’s output

Required Methods§

source

fn collate(&self, batch: Vec<T>) -> Self::Output

Take a batch of samples and collate them

Implementors§

source§

impl Collate<bool> for DefaultCollate

source§

impl Collate<bool> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<char> for DefaultCollate

source§

impl Collate<f32> for DefaultCollate

source§

impl Collate<f32> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<f64> for DefaultCollate

source§

impl Collate<f64> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<i8> for DefaultCollate

source§

impl Collate<i8> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<i16> for DefaultCollate

source§

impl Collate<i16> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<i32> for DefaultCollate

source§

impl Collate<i32> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<i64> for DefaultCollate

source§

impl Collate<i64> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<i128> for DefaultCollate

source§

impl Collate<isize> for DefaultCollate

source§

impl Collate<u8> for DefaultCollate

NoOp for binairy, as pytorch default_collate function.

source§

impl Collate<u8> for TorchCollate

Available on crate feature tch only.

NoOp for binairy, as pytorch default_collate function.

source§

impl Collate<u16> for DefaultCollate

source§

impl Collate<u32> for DefaultCollate

source§

impl Collate<u64> for DefaultCollate

source§

impl Collate<u128> for DefaultCollate

source§

impl Collate<usize> for DefaultCollate

source§

impl Collate<CString> for DefaultCollate

source§

impl Collate<CString> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<String> for DefaultCollate

source§

impl Collate<String> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroI8> for DefaultCollate

source§

impl Collate<NonZeroI8> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroI16> for DefaultCollate

source§

impl Collate<NonZeroI16> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroI32> for DefaultCollate

source§

impl Collate<NonZeroI32> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroI64> for DefaultCollate

source§

impl Collate<NonZeroI64> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroI128> for DefaultCollate

source§

impl Collate<NonZeroI128> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroIsize> for DefaultCollate

source§

impl Collate<NonZeroIsize> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroU8> for DefaultCollate

source§

impl Collate<NonZeroU8> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroU16> for DefaultCollate

source§

impl Collate<NonZeroU16> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroU32> for DefaultCollate

source§

impl Collate<NonZeroU32> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroU64> for DefaultCollate

source§

impl Collate<NonZeroU64> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroU128> for DefaultCollate

source§

impl Collate<NonZeroU128> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<NonZeroUsize> for DefaultCollate

source§

impl Collate<NonZeroUsize> for TorchCollate

Available on crate feature tch only.
source§

impl Collate<OsString> for DefaultCollate

source§

impl Collate<OsString> for TorchCollate

Available on crate feature tch only.
source§

impl<'a> Collate<&'a str> for DefaultCollate

§

type Output = Vec<&'a str, Global>

source§

impl<'a> Collate<&'a str> for TorchCollate

Available on crate feature tch only.
§

type Output = Vec<&'a str, Global>

source§

impl<'a> Collate<&'a CStr> for DefaultCollate

§

type Output = Vec<&'a CStr, Global>

source§

impl<'a> Collate<&'a CStr> for TorchCollate

Available on crate feature tch only.
§

type Output = Vec<&'a CStr, Global>

source§

impl<A> Collate<(A,)> for DefaultCollatewhere A: Clone, DefaultCollate: Collate<A>,

source§

impl<A> Collate<(A,)> for TorchCollatewhere A: Clone, TorchCollate: Collate<A>,

Available on crate feature tch only.
§

type Output = (<TorchCollate as Collate<A>>::Output,)

source§

impl<A, B> Collate<(A, B)> for DefaultCollatewhere A: Clone, B: Clone, DefaultCollate: Collate<A> + Collate<B>,

source§

impl<A, B> Collate<(A, B)> for TorchCollatewhere A: Clone, B: Clone, TorchCollate: Collate<A> + Collate<B>,

Available on crate feature tch only.
source§

impl<A, B, C> Collate<(A, B, C)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C>,

source§

impl<A, B, C> Collate<(A, B, C)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C>,

Available on crate feature tch only.
source§

impl<A, B, C, D> Collate<(A, B, C, D)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D>,

source§

impl<A, B, C, D> Collate<(A, B, C, D)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E> Collate<(A, B, C, D, E)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E>,

source§

impl<A, B, C, D, E> Collate<(A, B, C, D, E)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E, F> Collate<(A, B, C, D, E, F)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F>,

source§

impl<A, B, C, D, E, F> Collate<(A, B, C, D, E, F)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E, F, G> Collate<(A, B, C, D, E, F, G)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G>,

source§

impl<A, B, C, D, E, F, G> Collate<(A, B, C, D, E, F, G)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E, F, G, H> Collate<(A, B, C, D, E, F, G, H)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H>,

source§

impl<A, B, C, D, E, F, G, H> Collate<(A, B, C, D, E, F, G, H)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E, F, G, H, I> Collate<(A, B, C, D, E, F, G, H, I)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I>,

source§

impl<A, B, C, D, E, F, G, H, I> Collate<(A, B, C, D, E, F, G, H, I)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E, F, G, H, I, J> Collate<(A, B, C, D, E, F, G, H, I, J)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, J: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I> + Collate<J>,

source§

impl<A, B, C, D, E, F, G, H, I, J> Collate<(A, B, C, D, E, F, G, H, I, J)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, J: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I> + Collate<J>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E, F, G, H, I, J, K> Collate<(A, B, C, D, E, F, G, H, I, J, K)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, J: Clone, K: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I> + Collate<J> + Collate<K>,

source§

impl<A, B, C, D, E, F, G, H, I, J, K> Collate<(A, B, C, D, E, F, G, H, I, J, K)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, J: Clone, K: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I> + Collate<J> + Collate<K>,

Available on crate feature tch only.
source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> Collate<(A, B, C, D, E, F, G, H, I, J, K, L)> for DefaultCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, J: Clone, K: Clone, L: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I> + Collate<J> + Collate<K> + Collate<L>,

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> Collate<(A, B, C, D, E, F, G, H, I, J, K, L)> for TorchCollatewhere A: Clone, B: Clone, C: Clone, D: Clone, E: Clone, F: Clone, G: Clone, H: Clone, I: Clone, J: Clone, K: Clone, L: Clone, TorchCollate: Collate<A> + Collate<B> + Collate<C> + Collate<D> + Collate<E> + Collate<F> + Collate<G> + Collate<H> + Collate<I> + Collate<J> + Collate<K> + Collate<L>,

Available on crate feature tch only.
source§

impl<A, D> Collate<ArrayBase<OwnedRepr<A>, D>> for DefaultCollatewhere A: Clone, D: Dimension, D::Larger: RemoveAxis,

source§

impl<A, D> Collate<ArrayBase<OwnedRepr<A>, D>> for TorchCollatewhere A: Clone + Element, D: Dimension, D::Larger: RemoveAxis,

Available on crate feature tch only.
source§

impl<K, V> Collate<BTreeMap<K, V, Global>> for DefaultCollatewhere K: Ord + Clone, V: Clone, Self: Collate<V>,

source§

impl<K, V> Collate<BTreeMap<K, V, Global>> for TorchCollatewhere K: Ord + Clone, V: Clone, Self: Collate<V>,

Available on crate feature tch only.
source§

impl<K, V, H> Collate<HashMap<K, V, H>> for DefaultCollatewhere K: Eq + Hash + Clone, V: Clone, Self: Collate<V>, H: BuildHasher,

source§

impl<K, V, H> Collate<HashMap<K, V, H>> for TorchCollatewhere K: Eq + Hash + Clone, V: Clone, Self: Collate<V>, H: BuildHasher,

Available on crate feature tch only.
source§

impl<T> Collate<&T> for DefaultCollatewhere T: Clone, Self: Collate<T>,

We think it makes no sense to but a bench of reference into a Tensor. That’s why if the dataset yield reference a we clone them them. It is useful for having a non-consuming Iterator over the Dataloader.

source§

impl<T> Collate<&T> for TorchCollatewhere T: Clone, Self: Collate<T>,

Available on crate feature tch only.

We think it makes no sense to but a bench of reference into a Tensor. That’s why if the dataset yield reference and they we clone their value. It is useful for having a non-consuming Iterator over the Dataloader.

source§

impl<T> Collate<VecDeque<T, Global>> for DefaultCollatewhere Self: Collate<T>, T: Clone,

source§

impl<T> Collate<VecDeque<T, Global>> for TorchCollatewhere Self: Collate<T>, T: Clone,

Available on crate feature tch only.
source§

impl<T> Collate<Vec<T, Global>> for DefaultCollatewhere Self: Collate<T>, T: Clone,

source§

impl<T> Collate<Vec<T, Global>> for TorchCollatewhere Self: Collate<T>, T: Clone,

Available on crate feature tch only.
source§

impl<T> Collate<T> for NoOpCollate

§

type Output = Vec<T, Global>

source§

impl<T, F, O> Collate<T> for Fwhere F: Fn(Vec<T>) -> O,

§

type Output = O

source§

impl<T, const N: usize> Collate<[T; N]> for DefaultCollatewhere Self: Collate<T>, T: Clone,

source§

impl<T, const N: usize> Collate<[T; N]> for TorchCollatewhere Self: Collate<T>, T: Clone,

Available on crate feature tch only.