Trait Collate

Source
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 binary, as pytorch default_collate function.

Source§

impl Collate<u8> for TorchCollate

Available on crate feature tch only.

NoOp for binary, 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<NonZero<i8>> for DefaultCollate

Source§

impl Collate<NonZero<i8>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<i16>> for DefaultCollate

Source§

impl Collate<NonZero<i16>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<i32>> for DefaultCollate

Source§

impl Collate<NonZero<i32>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<i64>> for DefaultCollate

Source§

impl Collate<NonZero<i64>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<i128>> for DefaultCollate

Source§

impl Collate<NonZero<i128>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<isize>> for DefaultCollate

Source§

impl Collate<NonZero<isize>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<u8>> for DefaultCollate

Source§

impl Collate<NonZero<u8>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<u16>> for DefaultCollate

Source§

impl Collate<NonZero<u16>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<u32>> for DefaultCollate

Source§

impl Collate<NonZero<u32>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<u64>> for DefaultCollate

Source§

impl Collate<NonZero<u64>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<u128>> for DefaultCollate

Source§

impl Collate<NonZero<u128>> for TorchCollate

Available on crate feature tch only.
Source§

impl Collate<NonZero<usize>> for DefaultCollate

Source§

impl Collate<NonZero<usize>> 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

Source§

type Output = Vec<&'a str>

Source§

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

Available on crate feature tch only.
Source§

type Output = Vec<&'a str>

Source§

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

Source§

type Output = Vec<&'a CStr>

Source§

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

Available on crate feature tch only.
Source§

type Output = Vec<&'a CStr>

Source§

impl<A> Collate<(A,)> for DefaultCollate

Source§

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

Available on crate feature tch only.
Source§

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

Source§

impl<A, B> Collate<(A, B)> for TorchCollate
where 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 DefaultCollate
where A: Clone, B: Clone, C: Clone, DefaultCollate: Collate<A> + Collate<B> + Collate<C>,

Source§

impl<A, B, C> Collate<(A, B, C)> for TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where 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 TorchCollate
where 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 DefaultCollate
where A: Clone, D: Dimension, D::Larger: RemoveAxis,

Source§

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

Available on crate feature tch only.
Source§

impl<K, V> Collate<BTreeMap<K, V>> for DefaultCollate
where K: Ord + Clone, V: Clone, Self: Collate<V>,

Source§

impl<K, V> Collate<BTreeMap<K, V>> for TorchCollate
where 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 DefaultCollate
where K: Eq + Hash + Clone, V: Clone, Self: Collate<V>, H: BuildHasher,

Source§

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

Available on crate feature tch only.
Source§

impl<T> Collate<&T> for DefaultCollate
where 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 TorchCollate
where 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>> for DefaultCollate
where Self: Collate<T>, T: Clone,

Source§

impl<T> Collate<VecDeque<T>> for TorchCollate
where Self: Collate<T>, T: Clone,

Available on crate feature tch only.
Source§

impl<T> Collate<Vec<T>> for DefaultCollate
where Self: Collate<T>, T: Clone,

Source§

impl<T> Collate<Vec<T>> for TorchCollate
where Self: Collate<T>, T: Clone,

Available on crate feature tch only.
Source§

impl<T> Collate<T> for NoOpCollate

Source§

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

Source§

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

Source§

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

Available on crate feature tch only.