pub struct PopulationLinear { /* private fields */ }Expand description
A family of independent linear maps sharing one explicit population axis. Inputs without the population axis are broadcast to every member; inputs already carrying it keep memberwise independence through later layers.
Implementations§
Trait Implementations§
Source§impl Module for PopulationLinear
impl Module for PopulationLinear
fn output_shape(&self, input: &Shape) -> Result<Shape>
Source§fn build(&mut self, input: &Shape, device: &Device, seed: u64) -> Result<Shape>
fn build(&mut self, input: &Shape, device: &Device, seed: u64) -> Result<Shape>
Infer extents, validate contracts, allocate and initialize parameters; never run forward.
Rebuilding with compatible extents/device preserves parameters and ignores the new seed.
Source§fn forward(&self, input: &Tensor) -> Result<Tensor>
fn forward(&self, input: &Tensor) -> Result<Tensor>
Evaluation semantics: no mode flag on
self, no randomness beyond what
forward itself already defines. This never changes with the arrival
of forward_training.Source§fn named_parameters(&self) -> Vec<(String, Parameter)>
fn named_parameters(&self) -> Vec<(String, Parameter)>
Structural paths identify slots; ParamId identifies shared storage within this process.
Source§fn forward_training(
&self,
input: &Tensor,
pass: &mut TrainingPass,
) -> Result<Tensor>
fn forward_training( &self, input: &Tensor, pass: &mut TrainingPass, ) -> Result<Tensor>
Training-mode forward pass, driven by an explicit
TrainingPass
rather than a flag on self. The default implementation ignores
pass and calls Module::forward, which is exactly today’s
behavior for every module without a train/eval distinction. Override
this (never forward, which must stay evaluation semantics) to add
explicit randomness or a train/eval difference, such as Dropout.
A container that holds child modules (Sequential, or any future
one) overrides this to thread the same pass through every child in
order, so their draws stay distinct within one step.fn parameter(&self, name: &str) -> Result<Parameter>
fn parameters(&self) -> Vec<Parameter>
fn zero_grad(&self)
Source§fn named_states(&self) -> Vec<(String, State)>
fn named_states(&self) -> Vec<(String, State)>
Persistent non-parameter tensors this module owns across training
steps –
BatchNorm-style running statistics. Same slot-path
convention as Module::named_parameters: a container (Sequential
or any future one) aggregates every child’s own states under
"{index}.{name}". Defaults empty, exactly like named_parameters,
since most modules have no persistent state. A State here is never
written directly; only TrainingPass::commit writes one, after
staging in forward_training.fn state(&self, name: &str) -> Result<State>
fn states(&self) -> Vec<State>
Auto Trait Implementations§
impl !RefUnwindSafe for PopulationLinear
impl !Send for PopulationLinear
impl !Sync for PopulationLinear
impl !UnwindSafe for PopulationLinear
impl Freeze for PopulationLinear
impl Unpin for PopulationLinear
impl UnsafeUnpin for PopulationLinear
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
Mutably borrows from an owned value. Read more