Skip to content

Commit c7454e7

Browse files
feat(test): add demo usage instructions
1 parent 8c07ccb commit c7454e7

1 file changed

Lines changed: 75 additions & 9 deletions

File tree

  • try1 (OOP Approach)/rust/src
Lines changed: 75 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,79 @@
1+
use rand::Rng;
2+
13
mod mlp;
4+
5+
fn gen_random_ints(arr_len: usize, min: u16, max: u16) -> Vec<u16> {
6+
let mut rng = rand::rng();
7+
let mut vec: Vec<u16> = Vec::new();
8+
for _ in 0..arr_len {
9+
vec.push(rng.random_range(min..max));
10+
}
11+
vec
12+
}
13+
fn gen_random_floats_vector(vector_len: usize, min: f32, max: f32) -> Vec<f32> {
14+
let mut rng = rand::rng();
15+
let mut vec: Vec<f32> = Vec::new();
16+
for _ in 0..vector_len {
17+
vec.push(rng.random_range(min..max));
18+
}
19+
vec
20+
}
21+
fn gen_random_floats_2d(rows: usize, cols: usize, min: f32, max: f32) -> Vec<Vec<f32>> {
22+
let mut vec: Vec<Vec<f32>> = Vec::new();
23+
for _ in 0..rows {
24+
vec.push(gen_random_floats_vector(cols, min, max));
25+
}
26+
vec
27+
}
28+
29+
fn gen_identity_2d_matrix(rows: usize, cols: usize) -> Vec<Vec<f32>> {
30+
let mut vec: Vec<Vec<f32>> = Vec::new();
31+
for i in 0..rows {
32+
let mut row: Vec<f32> = Vec::new();
33+
for j in 0..cols {
34+
if i == j {
35+
row.push(1.0);
36+
} else {
37+
row.push(0.0);
38+
}
39+
}
40+
vec.push(row);
41+
}
42+
vec
43+
}
44+
fn print_2d_matrix(matrix: &[Vec<f32>]) {
45+
println!("2D Array : ");
46+
for row in matrix.iter() {
47+
for val in row.iter() {
48+
print!("{:.2}, ", val);
49+
}
50+
println!();
51+
}
52+
}
253
fn main() {
3-
let mut layers: Vec<u16> = Vec::new();
4-
let mut inputs: Vec<f32> = Vec::new();
5-
layers.push(40);
6-
layers.push(20);
7-
inputs.push(0.12);
8-
inputs.push(0.42);
9-
inputs.push(0.11);
10-
let mut mlp = mlp::Mlp::new(10, &layers, 0.03);
54+
let input_layer_size = 10;
55+
let hid_out_layer_count = 2;
56+
let hid_out_layer_sizes = gen_random_ints(hid_out_layer_count, 10, 20);
57+
58+
// Create a new MLP
59+
let mut mlp = mlp::Mlp::new(input_layer_size, &hid_out_layer_sizes, 0.1);
60+
61+
//Dataset with labels
62+
let inputs = gen_random_floats_2d(
63+
*hid_out_layer_sizes.last().expect("Array Empty") as usize,
64+
input_layer_size as usize,
65+
0.0,
66+
100.0,
67+
);
68+
let targets = gen_identity_2d_matrix(
69+
*hid_out_layer_sizes.last().expect("Array Empty") as usize,
70+
*hid_out_layer_sizes.last().expect("Array Empty") as usize,
71+
);
1172
mlp.describe();
12-
mlp.feed_forward(&inputs);
73+
mlp.print_params_count();
74+
75+
mlp.train(&inputs, &targets, 1000);
76+
77+
mlp.predict(&inputs, &targets);
78+
println!("Done");
1379
}

0 commit comments

Comments
 (0)