jiro_nn 0.8.0

Neural Networks framework with model building & data preprocessing features.
Documentation
#[cfg(feature = "arrayfire")]
use arrayfire::get_available_backends;
use jiro_nn::linalg::{Matrix, MatrixTrait, Scalar};

pub fn print_mat(m: &Matrix) {
    println!("[");
    for row in m.get_data_row_leading() {
        print!("    ");
        for val in row {
            print!("{}, ", val);
        }
        println!("")
    }
    println!("]");
}

pub fn main() {
    #[cfg(feature = "arrayfire")]
    let backends = get_available_backends();
    #[cfg(feature = "arrayfire")]
    println!("{:#?}", backends);

    let m = Matrix::constant(10, 1000, 2.0);
    let m2 = Matrix::constant(1000, 10, 131.13313);
    let m3 = m.dot(&m2);

    print_mat(&m3);

    let m4 = m3.transpose();

    print_mat(&m4);

    let m5 = m4.columns_sum();

    print_mat(&m5);

    let m = Matrix::from_iter(1, 3, vec![1.0, 2.0, 3.0].into_iter());

    print_mat(&m);

    let m = Matrix::from_iter(3, 1, vec![1.0, 2.0, 3.0].into_iter());

    print_mat(&m);

    let m = Matrix::from_fn(3, 4, |i, _| i as Scalar);

    print_mat(&m);

    let m = Matrix::from_fn(3, 4, |_, j| j as Scalar);

    print_mat(&m);

    let m = Matrix::from_fn(3, 4, |i, j| i as Scalar + j as Scalar);

    print_mat(&m);

    let m = Matrix::from_row_leading_vector2(&vec![vec![1.0, 2.0, 3.0], vec![4.0, 5.0, 6.0]]);

    print_mat(&m);

    let m = Matrix::from_column_leading_vector2(&vec![vec![1.0, 2.0, 3.0], vec![4.0, 5.0, 6.0]]);

    print_mat(&m);

    let m = Matrix::random_uniform(10, 5, 3.0, 18.4);

    print_mat(&m);

    let m = Matrix::random_normal(10, 5, 10., 2.0);

    print_mat(&m);
}