pub struct ReflectionPad { /* private fields */ }Expand description
Reflection padding, covering ReflectionPad1d/2d/3d. Matches PyTorch’s
own constraint that each side’s padding be strictly less than the axis’s
extent (checked before launch, in reflect_source’s doc); see
edge_pad for the composition and its exact gradient.
Implementations§
Source§impl ReflectionPad
impl ReflectionPad
Trait Implementations§
Source§impl Module for ReflectionPad
impl Module for ReflectionPad
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 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.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.
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 Freeze for ReflectionPad
impl RefUnwindSafe for ReflectionPad
impl Send for ReflectionPad
impl Sync for ReflectionPad
impl Unpin for ReflectionPad
impl UnsafeUnpin for ReflectionPad
impl UnwindSafe for ReflectionPad
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