Skip to main content

Loss

Struct Loss 

Source
pub struct Loss;
Expand description

Loss function implementations for neural network training.

Provides forward (loss computation) and backward (gradient computation) passes for common loss functions used in GNN training.

§Numerical Stability

All loss functions use epsilon clamping and gradient clipping to prevent numerical instability with extreme prediction values (near 0 or 1).

Implementations§

Source§

impl Loss

Source

pub fn compute( loss_type: LossType, predictions: &Array2<f32>, targets: &Array2<f32>, ) -> Result<f32>

Compute the loss value between predictions and targets.

§Arguments
  • loss_type - The type of loss function to use
  • predictions - Model predictions as a 2D array
  • targets - Ground truth targets as a 2D array (same shape as predictions)
§Returns
  • Ok(f32) - The computed scalar loss value
  • Err(GnnError) - If shapes don’t match or computation fails
§Example
use ndarray::Array2;
use ruvector_gnn::training::{Loss, LossType};

let predictions = Array2::from_shape_vec((2, 2), vec![0.9, 0.1, 0.2, 0.8]).unwrap();
let targets = Array2::from_shape_vec((2, 2), vec![1.0, 0.0, 0.0, 1.0]).unwrap();
let loss = Loss::compute(LossType::Mse, &predictions, &targets).unwrap();
assert!(loss >= 0.0);
Source

pub fn gradient( loss_type: LossType, predictions: &Array2<f32>, targets: &Array2<f32>, ) -> Result<Array2<f32>>

Compute the gradient of the loss with respect to predictions.

§Arguments
  • loss_type - The type of loss function to use
  • predictions - Model predictions as a 2D array
  • targets - Ground truth targets as a 2D array (same shape as predictions)
§Returns
  • Ok(Array2<f32>) - Gradient array with same shape as predictions
  • Err(GnnError) - If shapes don’t match or computation fails
§Example
use ndarray::Array2;
use ruvector_gnn::training::{Loss, LossType};

let predictions = Array2::from_shape_vec((2, 2), vec![0.9, 0.1, 0.2, 0.8]).unwrap();
let targets = Array2::from_shape_vec((2, 2), vec![1.0, 0.0, 0.0, 1.0]).unwrap();
let grad = Loss::gradient(LossType::Mse, &predictions, &targets).unwrap();
assert_eq!(grad.shape(), predictions.shape());

Auto Trait Implementations§

§

impl Freeze for Loss

§

impl RefUnwindSafe for Loss

§

impl Send for Loss

§

impl Sync for Loss

§

impl Unpin for Loss

§

impl UnsafeUnpin for Loss

§

impl UnwindSafe for Loss

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more