pub struct Model {
pub layers: Vec<Box<dyn Layer>>,
pub optimizer: Optimizers,
}Expand description
A neural network model with a keras-inspired API
Fields§
§layers: Vec<Box<dyn Layer>>§optimizer: OptimizersImplementations§
Source§impl Model
impl Model
Sourcepub fn new() -> Model
pub fn new() -> Model
Create a new model
Examples found in repository?
examples/nn_full.rs (line 10)
4fn main() {
5 Logger::new().init().unwrap();
6 let x = Tensor::linspace(-5.0, 5.0, 50);
7 let func = &x * -5.0;
8 let y = &func + &(Tensor::rand([50, 1]) * 0.4);
9
10 let mut model = Model::new();
11 model.add_layer(Linear::new(1, 10, Activations::None));
12 model.add_layer(Linear::new(10, 10, Activations::None));
13 model.add_layer(Linear::new(10, 1, Activations::None));
14
15 model.compile(Optimizers::SGD);
16 model.fit(&x, &y, 500, 0.00001, true);
17
18 let x_pred = scalar!(1.0);
19 let y_pred = model.predict(&x_pred);
20 println!("Predict result (should be -5): {:?}", y_pred);
21}Sourcepub fn add_layer(&mut self, layer: Linear)
pub fn add_layer(&mut self, layer: Linear)
Add a layer to a model
Examples found in repository?
examples/nn_full.rs (line 11)
4fn main() {
5 Logger::new().init().unwrap();
6 let x = Tensor::linspace(-5.0, 5.0, 50);
7 let func = &x * -5.0;
8 let y = &func + &(Tensor::rand([50, 1]) * 0.4);
9
10 let mut model = Model::new();
11 model.add_layer(Linear::new(1, 10, Activations::None));
12 model.add_layer(Linear::new(10, 10, Activations::None));
13 model.add_layer(Linear::new(10, 1, Activations::None));
14
15 model.compile(Optimizers::SGD);
16 model.fit(&x, &y, 500, 0.00001, true);
17
18 let x_pred = scalar!(1.0);
19 let y_pred = model.predict(&x_pred);
20 println!("Predict result (should be -5): {:?}", y_pred);
21}Sourcepub fn parameters(&self) -> Vec<&Tensor>
pub fn parameters(&self) -> Vec<&Tensor>
Get the weights and biases of a model
Sourcepub fn compile(&mut self, optimizer: Optimizers)
pub fn compile(&mut self, optimizer: Optimizers)
Configure a model with an optimizer
Examples found in repository?
examples/nn_full.rs (line 15)
4fn main() {
5 Logger::new().init().unwrap();
6 let x = Tensor::linspace(-5.0, 5.0, 50);
7 let func = &x * -5.0;
8 let y = &func + &(Tensor::rand([50, 1]) * 0.4);
9
10 let mut model = Model::new();
11 model.add_layer(Linear::new(1, 10, Activations::None));
12 model.add_layer(Linear::new(10, 10, Activations::None));
13 model.add_layer(Linear::new(10, 1, Activations::None));
14
15 model.compile(Optimizers::SGD);
16 model.fit(&x, &y, 500, 0.00001, true);
17
18 let x_pred = scalar!(1.0);
19 let y_pred = model.predict(&x_pred);
20 println!("Predict result (should be -5): {:?}", y_pred);
21}Sourcepub fn fit(
&mut self,
x: &Tensor,
y: &Tensor,
epochs: usize,
lr: f64,
debug: bool,
)
pub fn fit( &mut self, x: &Tensor, y: &Tensor, epochs: usize, lr: f64, debug: bool, )
Train a model
Examples found in repository?
examples/nn_full.rs (line 16)
4fn main() {
5 Logger::new().init().unwrap();
6 let x = Tensor::linspace(-5.0, 5.0, 50);
7 let func = &x * -5.0;
8 let y = &func + &(Tensor::rand([50, 1]) * 0.4);
9
10 let mut model = Model::new();
11 model.add_layer(Linear::new(1, 10, Activations::None));
12 model.add_layer(Linear::new(10, 10, Activations::None));
13 model.add_layer(Linear::new(10, 1, Activations::None));
14
15 model.compile(Optimizers::SGD);
16 model.fit(&x, &y, 500, 0.00001, true);
17
18 let x_pred = scalar!(1.0);
19 let y_pred = model.predict(&x_pred);
20 println!("Predict result (should be -5): {:?}", y_pred);
21}Sourcepub fn predict(&self, x: &Tensor) -> Tensor ⓘ
pub fn predict(&self, x: &Tensor) -> Tensor ⓘ
Make predictions from a model
Examples found in repository?
examples/nn_full.rs (line 19)
4fn main() {
5 Logger::new().init().unwrap();
6 let x = Tensor::linspace(-5.0, 5.0, 50);
7 let func = &x * -5.0;
8 let y = &func + &(Tensor::rand([50, 1]) * 0.4);
9
10 let mut model = Model::new();
11 model.add_layer(Linear::new(1, 10, Activations::None));
12 model.add_layer(Linear::new(10, 10, Activations::None));
13 model.add_layer(Linear::new(10, 1, Activations::None));
14
15 model.compile(Optimizers::SGD);
16 model.fit(&x, &y, 500, 0.00001, true);
17
18 let x_pred = scalar!(1.0);
19 let y_pred = model.predict(&x_pred);
20 println!("Predict result (should be -5): {:?}", y_pred);
21}Auto Trait Implementations§
impl Freeze for Model
impl !RefUnwindSafe for Model
impl !Send for Model
impl !Sync for Model
impl Unpin for Model
impl !UnwindSafe for Model
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more