pub struct GroupNorm(/* private fields */);Expand description
Group normalization over channel groups and explicitly named sample axes.
Implementations§
Trait Implementations§
Source§impl Module for GroupNorm
impl Module for GroupNorm
fn output_shape(&self, input: &Shape) -> Result<Shape>
Source§fn build(&mut self, input: &Shape, device: &Device, _: u64) -> Result<Shape>
fn build(&mut self, input: &Shape, device: &Device, _: 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 GroupNorm
impl !Send for GroupNorm
impl !Sync for GroupNorm
impl !UnwindSafe for GroupNorm
impl Freeze for GroupNorm
impl Unpin for GroupNorm
impl UnsafeUnpin for GroupNorm
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