Module: aprender::loss

Public module of the aprender-core crate.

Source

crates/aprender-core/src/loss.rs or directory.

Example

use aprender::loss::{MSELoss, MAELoss, HuberLoss, Loss};
// See `cargo doc -p aprender-core --open` for full API reference.

Module summary

aprender::loss exposes the classic regression losses (MSE, MAE, Huber) and the categorical cross-entropy loss used by classifiers, both as free functions (mse_loss, mae_loss, huber_loss, cross_entropy_loss, triplet_loss) and as types implementing the Loss trait so they can be passed around generically by optimizers and training loops.

Key types

TypeDescription
LossTrait. forward(y_pred, y_true) -> f32 and (where supported) backward.
MSELossMean Squared Error. Smooth, convex; the default for regression.
MAELossMean Absolute Error. Robust to outliers but non-differentiable at 0.
HuberLossQuadratic near 0, linear past delta; combines MSE smoothness with MAE robustness.
mse_loss, mae_loss, huber_loss, cross_entropy_loss, triplet_lossFree-function entry points.

Usage patterns

Pattern 1: Compute MSE and MAE on a single prediction vector

use aprender::loss::{mse_loss, mae_loss, huber_loss};
use aprender::primitives::Vector;

let y_pred = Vector::from_slice(&[1.0, 2.0, 3.0]);
let y_true = Vector::from_slice(&[1.5, 2.0, 2.5]);

let mse = mse_loss(&y_pred, &y_true);
let mae = mae_loss(&y_pred, &y_true);
let huber = huber_loss(&y_pred, &y_true, 1.0);

println!("mse={:.4}  mae={:.4}  huber={:.4}", mse, mae, huber);
assert!(mse > 0.0 && mae > 0.0);

Pattern 2: Pass losses to generic code via the Loss trait

use aprender::loss::{Loss, MSELoss, HuberLoss};
use aprender::primitives::Vector;

fn evaluate<L: Loss>(loss: &L, y_pred: &Vector<f32>, y_true: &Vector<f32>) -> f32 {
    loss.forward(y_pred, y_true)
}

let y_pred = Vector::from_slice(&[0.5, 1.5, 2.5]);
let y_true = Vector::from_slice(&[1.0, 1.0, 3.0]);

let mse = evaluate(&MSELoss, &y_pred, &y_true);
let huber = evaluate(&HuberLoss { delta: 1.0 }, &y_pred, &y_true);
println!("MSE={:.3}  Huber={:.3}", mse, huber);

See also

  • optim — optimizers that minimise these losses
  • metrics — closely related scoring functions for evaluation (not training)
  • autograd — auto-differentiation of loss expressions over Tensor
  • nnnn::loss re-exports loss types for module-level training

Full API

Run cargo doc -p aprender-core --open for the rendered rustdoc, or browse docs.rs/aprender for the published version.