pub struct HuberLoss {
pub delta: f32,
pub lin_bias: f32,
}
Expand description
Calculate the Huber loss between the inputs and the target.
The loss for each element of the residuals r = targets - predictions
is given by
L(r) = 0.5 * r^2 if |r| <= d
L(r) = 0.5 * d^2 + d * (|r| - d) if |r| > d
where d
is the configured delta
. In particular, this is equal to the
L2 Loss for residuals with magnitude smaller than delta
,
but behaves linearly instead of quadratically for large residuals.
This loss function is less sensitive to outliers than the mean squared error loss.
See also: https://en.wikipedia.org/wiki/Huber_loss
Fields§
§delta: f32
The bound where the Huber loss function changes from quadratic to linear behaviour.
lin_bias: f32
Precomputed value for the linear bias.
Implementations§
§impl HuberLoss
impl HuberLoss
pub fn forward<const D: usize, B>(
&self,
predictions: Tensor<B, D>,
targets: Tensor<B, D>,
reduction: Reduction,
) -> Tensor<B, 1>where
B: Backend,
pub fn forward<const D: usize, B>(
&self,
predictions: Tensor<B, D>,
targets: Tensor<B, D>,
reduction: Reduction,
) -> Tensor<B, 1>where
B: Backend,
Compute the loss element-wise for the predictions and targets, then reduce to a single loss value.
Reduction::Auto
behaves as Reduction::Mean
.
§Shapes
- predictions: […dims]
- targets: […dims]
- output: [1]
Trait Implementations§
§impl<B> AutodiffModule<B> for HuberLosswhere
B: AutodiffBackend,
impl<B> AutodiffModule<B> for HuberLosswhere
B: AutodiffBackend,
§type InnerModule = HuberLoss
type InnerModule = HuberLoss
Inner module without auto-differentiation.
§fn valid(&self) -> <HuberLoss as AutodiffModule<B>>::InnerModule
fn valid(&self) -> <HuberLoss as AutodiffModule<B>>::InnerModule
Get the same module, but on the inner backend without auto-differentiation.
§impl<B> Module<B> for HuberLosswhere
B: Backend,
impl<B> Module<B> for HuberLosswhere
B: Backend,
§type Record = ConstantRecord
type Record = ConstantRecord
Type to save and load the module.
§fn visit<V>(&self, _visitor: &mut V)where
V: ModuleVisitor<B>,
fn visit<V>(&self, _visitor: &mut V)where
V: ModuleVisitor<B>,
Visit each tensor parameter in the module with a visitor.
§fn map<M>(self, _mapper: &mut M) -> HuberLosswhere
M: ModuleMapper<B>,
fn map<M>(self, _mapper: &mut M) -> HuberLosswhere
M: ModuleMapper<B>,
Map each tensor parameter in the module with a mapper.
§fn load_record(self, _record: <HuberLoss as Module<B>>::Record) -> HuberLoss
fn load_record(self, _record: <HuberLoss as Module<B>>::Record) -> HuberLoss
Load the module state from a record.
§fn into_record(self) -> <HuberLoss as Module<B>>::Record
fn into_record(self) -> <HuberLoss as Module<B>>::Record
Convert the module into a record containing the state.
§fn to_device(self, _: &<B as Backend>::Device) -> HuberLoss
fn to_device(self, _: &<B as Backend>::Device) -> HuberLoss
Move the module and all of its sub-modules to the given device. Read more
§fn fork(self, _: &<B as Backend>::Device) -> HuberLoss
fn fork(self, _: &<B as Backend>::Device) -> HuberLoss
Fork the module and all of its sub-modules to the given device. Read more
§fn collect_devices(
&self,
devices: Vec<<B as Backend>::Device>,
) -> Vec<<B as Backend>::Device>
fn collect_devices( &self, devices: Vec<<B as Backend>::Device>, ) -> Vec<<B as Backend>::Device>
Return all the devices found in the underneath module tree added to the given vector
without duplicates.
§fn devices(&self) -> Vec<<B as Backend>::Device>
fn devices(&self) -> Vec<<B as Backend>::Device>
Return all the devices found in the underneath module tree without duplicates.
§fn num_params(&self) -> usize
fn num_params(&self) -> usize
Get the number of parameters the module has, including all of its sub-modules.
§fn save_file<FR, PB>(
self,
file_path: PB,
recorder: &FR,
) -> Result<(), RecorderError>
fn save_file<FR, PB>( self, file_path: PB, recorder: &FR, ) -> Result<(), RecorderError>
Save the module to a file using the provided file recorder. Read more
§fn load_file<FR, PB>(
self,
file_path: PB,
recorder: &FR,
device: &<B as Backend>::Device,
) -> Result<Self, RecorderError>
fn load_file<FR, PB>( self, file_path: PB, recorder: &FR, device: &<B as Backend>::Device, ) -> Result<Self, RecorderError>
Load the module from a file using the provided file recorder. Read more
§fn quantize_weights<C>(self, quantizer: &mut Quantizer<C>) -> Selfwhere
C: Calibration,
fn quantize_weights<C>(self, quantizer: &mut Quantizer<C>) -> Selfwhere
C: Calibration,
Quantize the weights of the module.
§impl ModuleDisplay for HuberLoss
impl ModuleDisplay for HuberLoss
§fn custom_settings(&self) -> Option<DisplaySettings>
fn custom_settings(&self) -> Option<DisplaySettings>
Custom display settings for the module. Read more
§fn custom_content(&self, content: Content) -> Option<Content>
fn custom_content(&self, content: Content) -> Option<Content>
Custom attributes for the module. Read more
§fn format(&self, passed_settings: DisplaySettings) -> String
fn format(&self, passed_settings: DisplaySettings) -> String
Formats the module with provided display settings. Read more
Auto Trait Implementations§
impl Freeze for HuberLoss
impl RefUnwindSafe for HuberLoss
impl Send for HuberLoss
impl Sync for HuberLoss
impl Unpin for HuberLoss
impl UnwindSafe for HuberLoss
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
Converts
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>
Converts
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
Fallible version of [
ToCompactString::to_compact_string()
] Read more§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
Converts the given value to a [
CompactString
]. Read more