1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pub mod adam_optimizer;
pub mod rmsprop_optimizer;
pub mod sgd_optimzer;

use ndarray::Array2;

use crate::neural_network::{layer::Layer, Summary};

pub trait Optimizer: Summary {
    fn update_params(
        &mut self,
        layers: &mut Vec<Layer>,
        nabla_bs: &Vec<Array2<f64>>,
        nabla_ws: &Vec<Array2<f64>>,
    );

    fn initialize(&mut self, layers: &Vec<Layer>);

    fn pre_update(&mut self);

    fn post_update(&mut self);
}