pub struct Conv2D<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize = 1, const PADDING: usize = 0> {
pub weight: Tensor4D<OUT_CHAN, IN_CHAN, KERNEL_SIZE, KERNEL_SIZE>,
pub bias: Tensor1D<OUT_CHAN>,
}
Expand description
Requires Nightly Performs 2d convolutions on 3d and 4d images.
Pytorch Equivalent: torch.nn.Conv2d
Generics:
IN_CHAN
: The number of input channels in an image.OUT_CHAN
: The number of channels in the output of the layer.KERNEL_SIZE
: The size of the kernel applied to both width and height of the images.STRIDE
: How far to move the kernel each step. Defaults to1
PADDING
: How much zero padding to add around the images. Defaults to0
.
Examples:
ⓘ
#![cfg_attr(feature = "nightly", feature(generic_const_exprs))]
let m: Conv2D<16, 33, 3> = Default::default();
#[cfg(feature = "nightly")]
let _: Tensor3D<33, 30, 62> = m.forward(Tensor3D::<16, 32, 64>::zeros());
#[cfg(feature = "nightly")]
let _: Tensor4D<2, 33, 13, 12> = m.forward(Tensor4D::<2, 16, 15, 14>::zeros());
Fields
weight: Tensor4D<OUT_CHAN, IN_CHAN, KERNEL_SIZE, KERNEL_SIZE>
bias: Tensor1D<OUT_CHAN>
Trait Implementations
sourceimpl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize> CanUpdateWithGradients for Conv2D<I, O, K, S, P>
impl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize> CanUpdateWithGradients for Conv2D<I, O, K, S, P>
sourcefn update<G: GradientProvider>(
&mut self,
grads: &mut G,
unused: &mut UnusedTensors
)
fn update<G: GradientProvider>(
&mut self,
grads: &mut G,
unused: &mut UnusedTensors
)
Updates self given the GradientProvider. When any parameters that
are NOT present in
G
, then this function should
add the tensor’s UniqueId to UnusedTensors. Read moresourceimpl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Clone for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Clone for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
sourceimpl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Debug for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Debug for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
sourceimpl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Default for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Default for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
sourceimpl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize> LoadFromNpz for Conv2D<I, O, K, S, P>
impl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize> LoadFromNpz for Conv2D<I, O, K, S, P>
sourceimpl<T: Tape, const I: usize, const O: usize, const K: usize, const S: usize, const P: usize, const H: usize, const W: usize> Module<Tensor3D<I, H, W, T>> for Conv2D<I, O, K, S, P>
impl<T: Tape, const I: usize, const O: usize, const K: usize, const S: usize, const P: usize, const H: usize, const W: usize> Module<Tensor3D<I, H, W, T>> for Conv2D<I, O, K, S, P>
sourceimpl<T: Tape, const B: usize, const I: usize, const O: usize, const K: usize, const S: usize, const P: usize, const H: usize, const W: usize> Module<Tensor4D<B, I, H, W, T>> for Conv2D<I, O, K, S, P>
impl<T: Tape, const B: usize, const I: usize, const O: usize, const K: usize, const S: usize, const P: usize, const H: usize, const W: usize> Module<Tensor4D<B, I, H, W, T>> for Conv2D<I, O, K, S, P>
sourceimpl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize, T> ModuleMut<T> for Conv2D<I, O, K, S, P>where
Self: Module<T>,
impl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize, T> ModuleMut<T> for Conv2D<I, O, K, S, P>where
Self: Module<T>,
sourceimpl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize> ResetParams for Conv2D<I, O, K, S, P>
impl<const I: usize, const O: usize, const K: usize, const S: usize, const P: usize> ResetParams for Conv2D<I, O, K, S, P>
Auto Trait Implementations
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> RefUnwindSafe for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Send for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Sync for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> Unpin for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
impl<const IN_CHAN: usize, const OUT_CHAN: usize, const KERNEL_SIZE: usize, const STRIDE: usize, const PADDING: usize> UnwindSafe for Conv2D<IN_CHAN, OUT_CHAN, KERNEL_SIZE, STRIDE, PADDING>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more