HuberLossRegressionExample
public static void DocumentationExample()
Language: C#
Documentation: How to use HuberLoss with GPU acceleration
Step 1: Initialize the backend
var backend = new TorchSharpBackend();
await backend.InitializeAsync();
Step 2: Create HuberLoss with GPU support
var huberLoss = new HuberLoss(
delta: 1.0f, // Threshold for switching between loss regions
reduction: LossReduction.Mean, // Average loss across batch
gpuOps: backend as IGpuMathOps // Use GPU-accelerated operations
);
Step 3: Compute loss on GPU
float loss = await huberLoss.ComputeLossAsync(predictions, targets);
Step 4: Compute gradients for backpropagation
var gradients = await huberLoss.ComputeGradientAsync(predictions, targets);
Benefits of GPU-Aware Implementation:
All computation stays on GPU (no CPU marshaling overhead)
Smooth transitions between L2 and L1 regions (differentiable)
Robust to outliers in data
Suitable for regression tasks with noisy or outlier-prone targets
Scales well with batch size on GPU
When to use HuberLoss:
Regression with outliers (more robust than MSE)
Need smooth gradients (better than L1/MAE)
Hyperparameter: delta controls outlier sensitivity
delta = 0.5: More sensitive to outliers (mostly L2)
delta = 1.0: Balanced (default, good starting point)
delta = 5.0: More robust (mostly L1 for large errors)