pub struct BCECriterion { /* private fields */ }Expand description
The binary cross entropy criterion.
Uses the Sigmoid activation function and the cross entropy error.
Implementations§
Source§impl BCECriterion
impl BCECriterion
Sourcepub fn new(regularization: Regularization<f64>) -> Self
pub fn new(regularization: Regularization<f64>) -> Self
Constructs a new BCECriterion with the given regularization.
§Examples
use rusty_machine::learning::nnet::BCECriterion;
use rusty_machine::learning::toolkit::regularization::Regularization;
// Create a new BCE criterion with L2 regularization of 0.3.
let criterion = BCECriterion::new(Regularization::L2(0.3f64));Examples found in repository?
examples/nnet-and_gate.rs (line 43)
15fn main() {
16 println!("AND gate learner sample:");
17
18 const THRESHOLD: f64 = 0.7;
19
20 const SAMPLES: usize = 10000;
21 println!("Generating {} training data and labels...", SAMPLES as u32);
22
23 let mut input_data = Vec::with_capacity(SAMPLES * 2);
24 let mut label_data = Vec::with_capacity(SAMPLES);
25
26 for _ in 0..SAMPLES {
27 // The two inputs are "signals" between 0 and 1
28 let Closed01(left) = random::<Closed01<f64>>();
29 let Closed01(right) = random::<Closed01<f64>>();
30 input_data.push(left);
31 input_data.push(right);
32 if left > THRESHOLD && right > THRESHOLD {
33 label_data.push(1.0);
34 } else {
35 label_data.push(0.0)
36 }
37 }
38
39 let inputs = Matrix::new(SAMPLES, 2, input_data);
40 let targets = Matrix::new(SAMPLES, 1, label_data);
41
42 let layers = &[2, 1];
43 let criterion = BCECriterion::new(Regularization::L2(0.));
44 let mut model = NeuralNet::new(layers, criterion, StochasticGD::default());
45
46 println!("Training...");
47 // Our train function returns a Result<(), E>
48 model.train(&inputs, &targets).unwrap();
49
50 let test_cases = vec![
51 0.0, 0.0,
52 0.0, 1.0,
53 1.0, 1.0,
54 1.0, 0.0,
55 ];
56 let expected = vec![
57 0.0,
58 0.0,
59 1.0,
60 0.0,
61 ];
62 let test_inputs = Matrix::new(test_cases.len() / 2, 2, test_cases);
63 let res = model.predict(&test_inputs).unwrap();
64
65 println!("Evaluation...");
66 let mut hits = 0;
67 let mut misses = 0;
68 // Evaluation
69 println!("Got\tExpected");
70 for (idx, prediction) in res.into_vec().iter().enumerate() {
71 println!("{:.2}\t{}", prediction, expected[idx]);
72 if (prediction - 0.5) * (expected[idx] - 0.5) > 0. {
73 hits += 1;
74 } else {
75 misses += 1;
76 }
77 }
78
79 println!("Hits: {}, Misses: {}", hits, misses);
80 let hits_f = hits as f64;
81 let total = (hits + misses) as f64;
82 println!("Accuracy: {}%", (hits_f / total) * 100.);
83}Trait Implementations§
Source§impl Clone for BCECriterion
impl Clone for BCECriterion
Source§fn clone(&self) -> BCECriterion
fn clone(&self) -> BCECriterion
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Criterion for BCECriterion
impl Criterion for BCECriterion
Source§type Cost = CrossEntropyError
type Cost = CrossEntropyError
The cost function for the criterion.
Source§fn regularization(&self) -> Regularization<f64>
fn regularization(&self) -> Regularization<f64>
Returns the regularization for this criterion. Read more
Source§fn activate(&self, mat: Matrix<f64>) -> Matrix<f64>
fn activate(&self, mat: Matrix<f64>) -> Matrix<f64>
The activation function applied to a matrix.
Source§fn grad_activ(&self, mat: Matrix<f64>) -> Matrix<f64>
fn grad_activ(&self, mat: Matrix<f64>) -> Matrix<f64>
The gradient of the activation function applied to a matrix.
Source§fn cost(&self, outputs: &Matrix<f64>, targets: &Matrix<f64>) -> f64
fn cost(&self, outputs: &Matrix<f64>, targets: &Matrix<f64>) -> f64
The cost function. Read more
Source§fn cost_grad(&self, outputs: &Matrix<f64>, targets: &Matrix<f64>) -> Matrix<f64>
fn cost_grad(&self, outputs: &Matrix<f64>, targets: &Matrix<f64>) -> Matrix<f64>
The gradient of the cost function. Read more
Source§fn is_regularized(&self) -> bool
fn is_regularized(&self) -> bool
Checks if the current criterion includes regularization. Read more
Source§fn reg_cost(&self, reg_weights: MatrixSlice<'_, f64>) -> f64
fn reg_cost(&self, reg_weights: MatrixSlice<'_, f64>) -> f64
Returns the regularization cost for the criterion. Read more
Source§fn reg_cost_grad(&self, reg_weights: MatrixSlice<'_, f64>) -> Matrix<f64>
fn reg_cost_grad(&self, reg_weights: MatrixSlice<'_, f64>) -> Matrix<f64>
Returns the regularization gradient for the criterion. Read more
Source§impl Debug for BCECriterion
impl Debug for BCECriterion
Source§impl Default for BCECriterion
Creates an MSE Criterion without any regularization.
impl Default for BCECriterion
Creates an MSE Criterion without any regularization.
impl Copy for BCECriterion
Auto Trait Implementations§
impl Freeze for BCECriterion
impl RefUnwindSafe for BCECriterion
impl Send for BCECriterion
impl Sync for BCECriterion
impl Unpin for BCECriterion
impl UnwindSafe for BCECriterion
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