Struct dfdx::nn::Linear

source · []
pub struct Linear<const I: usize, const O: usize> {
    pub weight: Tensor2D<O, I, NoTape>,
    pub bias: Tensor1D<O, NoTape>,
}
Expand description

A linear transformation of the form x * transpose(W) + b, where W is a matrix, x is a vector or matrix, and b is a vector. If x is a matrix this does matrix multiplication.

Implements:

Generics:

  • I The input size of vectors & matrices.
  • O The output size of vectors & matrices.

Example usage: Linear<5, 2> can act on vectors with 5 elements, and results in vectors with 2 elements.

let model: Linear<5, 2> = Default::default();
assert_eq!(model.weight.data(), &[[0.0; 5]; 2]);
assert_eq!(model.bias.data(), &[0.0; 2]);
let x: Tensor1D<5> = Default::default();
let y: Tensor1D<2> = model.forward(x);
assert_eq!(y.data(), &[0.0; 2]);

Fields

weight: Tensor2D<O, I, NoTape>

Transposed weight matrix, shape (O, I)

bias: Tensor1D<O, NoTape>

Bias vector, shape (O, )

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Reads self.weight from {pre}weight.npy and self.bias from {pre}bias.npy using [numpy::read()].

Loads data from a .npz zip archive at the specified path. Read more

1d forward using vecmat_mul() and add().

Batched 2d forward using matmul() and add_broadcast_rhs_first()

Initializes self.weight and self.bias from a Uniform distribution between [-1 / sqrt(I), 1 / sqrt(I)].

This uses Randomize::randomize() to set the values of the tensor.

Saves self.weight to {pre}weight.npy and self.bias to {pre}bias.npy using [numpy::write()].

Save this object into the .npz file determined located at path. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.