pub struct Matrix {
pub data: Vec<f64>,
pub width: usize,
pub height: usize,
pub transposed: bool,
}Fields§
§data: Vec<f64>§width: usize§height: usize§transposed: boolImplementations§
Source§impl Matrix
impl Matrix
pub fn init_zero(height: usize, width: usize) -> Matrix
pub fn init(height: usize, width: usize, data: Vec<f64>) -> Matrix
pub fn init_rand(height: usize, width: usize) -> Matrix
Sourcepub fn get(&self, row: usize, column: usize) -> f64
pub fn get(&self, row: usize, column: usize) -> f64
Examples found in repository?
examples/mnist.rs (line 62)
61fn _print_a_number(labels: Matrix, images: Matrix, v: usize) {
62 println!("{}", labels.get(0, v));
63
64 for i in 0..28 * 28 {
65 if images.get(v, i) > 0.5 && images.get(v, i) < 1.0 {
66 if i % 28 == 0 {
67 print!("\n");
68 }
69
70 if images.get(v, i) > 0.5 && images.get(v, i) < 0.75 {
71 print!("-");
72 } else {
73 print!("*");
74 }
75 } else {
76 if i % 28 == 0 {
77 print!("\n");
78 }
79 print!("_");
80 }
81 }
82}pub fn get_1d(&self, index: usize) -> f64
pub fn get_row(&self, row: usize) -> Vec<f64>
pub fn set(&mut self, value: f64, row: usize, column: usize)
pub fn set_1d(&mut self, value: f64, index: usize)
pub fn set_row(&mut self, new_row: &Vec<f64>, row: usize)
pub fn dot(&self, m: &Matrix) -> Matrix
pub fn add_1d_matrix_to_all_rows(&self, m: &Matrix) -> Matrix
pub fn max(&self) -> f64
pub fn min(&self) -> f64
Sourcepub fn normalize(&mut self)
pub fn normalize(&mut self)
Examples found in repository?
examples/mnist.rs (line 20)
14pub fn testing() {
15 println!("extracting mnist data...");
16 let labels: Matrix = extract_labels("t10k-labels.idx1-ubyte");
17 let mut images: Matrix = extract_images("t10k-images.idx3-ubyte");
18 println!("extraction done");
19
20 images.normalize();
21 println!("number of images {}", images.height);
22 println!("number of pixels in each image {}", images.width);
23
24 println!("loading pre-trained model...");
25 let mut model: Model = load_model("mnist_128x128".to_string()).unwrap();
26
27 println!("evaluating...");
28 let score = model.evaluate(&images, false);
29 let acc = model.accuracy(&score, &labels);
30
31 println!("acc : {}", acc);
32}
33
34pub fn training() {
35 println!("extracting mnist data...");
36 let labels: Matrix = extract_labels("train-labels.idx1-ubyte");
37 let mut images: Matrix = extract_images("train-images.idx3-ubyte");
38 println!("extraction done");
39
40 images.normalize();
41 println!("number of images {}", images.height);
42 println!("number of pixels in each image {}", images.width);
43
44 ModelBuilder::new()
45 .add_layer(Layer::init(28 * 28, 128, true))
46 .add_layer(Layer::init(128, 128, true))
47 .add_layer(Layer::init(128, 10, false))
48 .optimizer(Optimizer::Adam {
49 learning_step: 0.001,
50 beta1: 0.9,
51 beta2: 0.999,
52 })
53 .l2_reg(0.001)
54 .checkpoint(Checkpoint::ValAcc {
55 save_path: "mnist_128x128".to_string(),
56 })
57 .verbose(10, false)
58 .build_and_train(&images, &labels, 128, 10, 2000);
59}pub fn transpose_inplace(&mut self)
pub fn t(&self) -> Matrix
pub fn is_equal(&self, m: &Matrix, precision: i32) -> bool
pub fn exp_inplace(&mut self)
pub fn sqrt_inplace(&mut self)
pub fn exp(&self) -> Matrix
pub fn pow_inplace(&mut self, a: i32)
pub fn pow(&self, a: i32) -> Matrix
pub fn sum(&self) -> f64
pub fn sum_rows(&self) -> Matrix
pub fn add_inplace(&mut self, a: f64)
pub fn div_inplace(&mut self, a: f64)
pub fn div(&self, a: f64) -> Matrix
pub fn mult_inplace(&mut self, a: f64)
pub fn mult(&self, a: f64) -> Matrix
pub fn add_two_matrices(&self, m: &Matrix) -> Matrix
pub fn add_two_matrices_inplace(&mut self, m: &Matrix)
pub fn div_two_matrices_inplace(&mut self, m: &Matrix)
pub fn pop_last_row(&mut self)
pub fn compute_d_relu_inplace(&mut self, z_minus_1: &Matrix)
pub fn display(&self)
pub fn convert_to_csv(&self) -> String
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Matrix
impl RefUnwindSafe for Matrix
impl Send for Matrix
impl Sync for Matrix
impl Unpin for Matrix
impl UnwindSafe for Matrix
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