use crate::layers::AL;
use core::marker::PhantomData;
use generic_array::GenericArray;
trait Loss<N: AL> {
fn loss(prediction: &mut GenericArray<f32, N>, reality: &GenericArray<f32, N>);
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Linear<N: AL>(PhantomData<N>);
impl<N: AL> Loss<N> for Linear<N> {
fn loss(prediction: &mut GenericArray<f32, N>, reality: &GenericArray<f32, N>) {
prediction.iter_mut().zip(reality).for_each(|(pre, &real)| {
*pre = real - *pre;
});
}
}