use newron::dataset::Dataset;
use newron::layers::{dense::Dense};
use newron::sequential::Sequential;
use newron::loss::{mse::MSE};
use newron::metrics::Metrics;
use newron::optimizers::optimizer::Optimizer;
fn main() {
let mut data = Vec::new();
for x in -10..10 {
let x = x as f64;
let y = 0.2 * x + 2.0;
data.push(vec![x, y]);
}
let dataset = Dataset::from_raw_data(data).unwrap();
let mut model = Sequential::new();
model.add(Dense::new(1, 1));
model.summary();
model.compile(MSE{},
Optimizer::SGD,
vec![Metrics::Accuracy]);
model.fit(&dataset, 100, true);
println!("\n\nEstimated equation :\n{:?}", model.layers[0]);
let value_to_predict = 4.6;
let prediction = model.predict(&vec![value_to_predict]).get_value(0, 0);
let true_value = 0.2 * value_to_predict + 2.0;
println!(
"Prediction for X={} -> Y={} (true value={})",
&value_to_predict, &prediction, &true_value
);
}