rotta_rs 0.1.0

a Deep Learning library with rust language
Documentation
use crate::arrayy::{ Arrayy, MultipleSum };

pub fn argmax_arr(arr: &Arrayy, dim: i32) -> Arrayy {
    let shape = &arr.shape;
    let d = if dim >= 0 { dim as usize } else { ((shape.len() as i32) + dim) as usize };

    let dims_loop = (&shape[..d]).multiple_sum();
    let length = (&shape[d + 1..]).multiple_sum();
    let dim_target = shape[d];
    let ptr_vector = arr.value.as_ptr();

    let mut q = vec![];
    for i in 0..dims_loop {
        for ii in 0..length {
            let mut max: Option<(usize, f32)> = None;
            let index = ii + i * dim_target;
            for iii in 0..dim_target {
                let index = iii * length + index;
                let num = unsafe { *ptr_vector.add(index) };

                if let Some((_, num_compare)) = max {
                    if num > num_compare {
                        max = Some((iii, num));
                    }
                } else {
                    max = Some((iii, num));
                }
            }

            if let Some((idx, _)) = max {
                q.push(idx as f32);
            }
        }
    }

    let mut shape = shape.to_owned();
    shape.remove(d);
    Arrayy::from_vector(shape, q)
}