pub struct Timesteps {
pub num_channels: usize,
pub flip_sin_to_cos: bool,
pub downscale_freq_shift: f64,
pub max_period: f64,
}Expand description
Timesteps — sinusoidal positional encoding of a scalar timestep.
Parameter-free. Reproduces
diffusers.models.embeddings.Timesteps(num_channels, flip_sin_to_cos, downscale_freq_shift) for flip_sin_to_cos=true and
downscale_freq_shift=0 (the SD-1.5 settings).
Fields§
§num_channels: usizeOutput channel count (must be even). For SD UNet: 320.
flip_sin_to_cos: boolIf true, cat([cos, sin]) (SD-style). If false, cat([sin, cos]).
downscale_freq_shift: f64downscale_freq_shift from diffusers (subtracted in the exponent
denominator). Always 0 for SD-1.5.
max_period: f64Maximum period of the sinusoid (diffusers default: 10000).
Implementations§
Source§impl Timesteps
impl Timesteps
Sourcepub fn new(
num_channels: usize,
flip_sin_to_cos: bool,
downscale_freq_shift: f64,
) -> FerrotorchResult<Self>
pub fn new( num_channels: usize, flip_sin_to_cos: bool, downscale_freq_shift: f64, ) -> FerrotorchResult<Self>
Build a Timesteps module.
§Errors
Returns FerrotorchError::InvalidArgument when num_channels
is not a positive even integer.
Sourcepub fn forward_t<T: Float>(
&self,
timesteps: &Tensor<T>,
) -> FerrotorchResult<Tensor<T>>
pub fn forward_t<T: Float>( &self, timesteps: &Tensor<T>, ) -> FerrotorchResult<Tensor<T>>
Compute the sinusoidal encoding for a batch of timesteps.
timesteps has shape [B] (1-D, dtype T). The output has
shape [B, num_channels].
§Errors
Returns FerrotorchError::ShapeMismatch when the input is not
rank-1, FerrotorchError::InvalidArgument if the half-channel
math overflows T.
Trait Implementations§
Source§impl<T: Float> Module<T> for Timesteps
impl<T: Float> Module<T> for Timesteps
Source§fn forward(&self, input: &Tensor<T>) -> FerrotorchResult<Tensor<T>>
fn forward(&self, input: &Tensor<T>) -> FerrotorchResult<Tensor<T>>
Source§fn parameters(&self) -> Vec<&Parameter<T>>
fn parameters(&self) -> Vec<&Parameter<T>>
Source§fn parameters_mut(&mut self) -> Vec<&mut Parameter<T>>
fn parameters_mut(&mut self) -> Vec<&mut Parameter<T>>
Source§fn named_parameters(&self) -> Vec<(String, &Parameter<T>)>
fn named_parameters(&self) -> Vec<(String, &Parameter<T>)>
Source§fn is_training(&self) -> bool
fn is_training(&self) -> bool
Source§fn load_state_dict(
&mut self,
_state: &StateDict<T>,
_strict: bool,
) -> FerrotorchResult<()>
fn load_state_dict( &mut self, _state: &StateDict<T>, _strict: bool, ) -> FerrotorchResult<()>
Source§fn to_device(&mut self, device: Device) -> Result<(), FerrotorchError>
fn to_device(&mut self, device: Device) -> Result<(), FerrotorchError>
Source§fn state_dict(&self) -> HashMap<String, Tensor<T>>
fn state_dict(&self) -> HashMap<String, Tensor<T>>
Source§fn buffers(&self) -> Vec<&Buffer<T>>
fn buffers(&self) -> Vec<&Buffer<T>>
Source§fn buffers_mut(&mut self) -> Vec<&mut Buffer<T>>
fn buffers_mut(&mut self) -> Vec<&mut Buffer<T>>
Source§fn named_buffers(&self) -> Vec<(String, &Buffer<T>)>
fn named_buffers(&self) -> Vec<(String, &Buffer<T>)>
Source§fn as_any(&self) -> Option<&(dyn Any + 'static)>
fn as_any(&self) -> Option<&(dyn Any + 'static)>
Source§fn children(&self) -> Vec<&dyn Module<T>>
fn children(&self) -> Vec<&dyn Module<T>>
Source§fn named_children(&self) -> Vec<(String, &dyn Module<T>)>
fn named_children(&self) -> Vec<(String, &dyn Module<T>)>
Source§fn modules(&self) -> Vec<&dyn Module<T>>where
Self: Sized,
fn modules(&self) -> Vec<&dyn Module<T>>where
Self: Sized,
Source§fn descendants_dyn(&self) -> Vec<&dyn Module<T>>
fn descendants_dyn(&self) -> Vec<&dyn Module<T>>
self in depth-first order. Object-safe.Source§fn named_modules(&self) -> Vec<(String, &dyn Module<T>)>where
Self: Sized,
fn named_modules(&self) -> Vec<(String, &dyn Module<T>)>where
Self: Sized,
""; children paths are joined with ..Source§fn named_descendants_dyn(&self) -> Vec<(String, &dyn Module<T>)>
fn named_descendants_dyn(&self) -> Vec<(String, &dyn Module<T>)>
Source§fn with_forward_hook(
self,
hook: Box<dyn Fn(&Tensor<T>, &Tensor<T>) + Send + Sync>,
) -> (HookedModule<Self, T>, HookHandle)where
Self: Sized,
fn with_forward_hook(
self,
hook: Box<dyn Fn(&Tensor<T>, &Tensor<T>) + Send + Sync>,
) -> (HookedModule<Self, T>, HookHandle)where
Self: Sized,
HookedModule and register a forward hook.
Returns the wrapper paired with a HookHandle that can be used to
remove the hook later. The wrapper implements Module<T> itself, so
it slots into any place the original module did. Mirrors
torch.nn.Module.register_forward_hook.Source§fn with_forward_pre_hook(
self,
hook: Box<dyn Fn(&Tensor<T>) -> Result<Tensor<T>, FerrotorchError> + Send + Sync>,
) -> (HookedModule<Self, T>, HookHandle)where
Self: Sized,
fn with_forward_pre_hook(
self,
hook: Box<dyn Fn(&Tensor<T>) -> Result<Tensor<T>, FerrotorchError> + Send + Sync>,
) -> (HookedModule<Self, T>, HookHandle)where
Self: Sized,
HookedModule and register a forward
pre-hook. See Self::with_forward_hook. Mirrors
torch.nn.Module.register_forward_pre_hook.Source§fn with_backward_hook(
self,
hook: Box<dyn Fn(&Tensor<T>, &Tensor<T>) + Send + Sync>,
) -> (HookedModule<Self, T>, HookHandle)where
Self: Sized,
fn with_backward_hook(
self,
hook: Box<dyn Fn(&Tensor<T>, &Tensor<T>) + Send + Sync>,
) -> (HookedModule<Self, T>, HookHandle)where
Self: Sized,
HookedModule and register a backward hook.
See Self::with_forward_hook. Mirrors
torch.nn.Module.register_backward_hook.Source§fn zero_grad(&self) -> Result<(), FerrotorchError>
fn zero_grad(&self) -> Result<(), FerrotorchError>
None. Read moreSource§fn requires_grad_(&mut self, requires_grad: bool)
fn requires_grad_(&mut self, requires_grad: bool)
requires_grad on every parameter (freeze / unfreeze the
module). Mirrors torch.nn.Module.requires_grad_.Source§fn apply_to_parameters(&mut self, f: &mut dyn FnMut(&mut Parameter<T>))
fn apply_to_parameters(&mut self, f: &mut dyn FnMut(&mut Parameter<T>))
torch.nn.Module.apply for the parameter case (true apply recurses
over all submodules; the recursive form requires &mut dyn Module
which conflicts with this trait’s &mut self borrow). Read moreAuto Trait Implementations§
impl Freeze for Timesteps
impl RefUnwindSafe for Timesteps
impl Send for Timesteps
impl Sync for Timesteps
impl Unpin for Timesteps
impl UnsafeUnpin for Timesteps
impl UnwindSafe for Timesteps
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more