Skip to main content

gradient_descent

Function gradient_descent 

Source
pub fn gradient_descent<F, G>(
    _f: &F,
    grad: &G,
    start: &[f64],
    learning_rate: f64,
    max_iter: usize,
) -> Vec<f64>
where F: Fn(&[f64]) -> f64, G: Fn(&[f64]) -> Vec<f64>,
Expand description

Optimize using gradient descent

§Arguments

  • f - Objective function to minimize
  • grad - Gradient function
  • start - Starting point
  • learning_rate - Step size (default: 0.01)
  • max_iter - Maximum iterations (default: 1000)

§Example

use dodecet_encoder::calculus;

let f = |p: &[f64]| (p[0] - 1.0).powi(2) + (p[1] - 2.0).powi(2);
let grad = |p: &[f64]| vec![2.0 * (p[0] - 1.0), 2.0 * (p[1] - 2.0)];
let result = calculus::gradient_descent(&f, &grad, &[0.0, 0.0], 0.1, 100);
assert!((result[0] - 1.0).abs() < 0.1);
assert!((result[1] - 2.0).abs() < 0.1);