#pragma once #include "./core/omp_config.h" #include "./utils/vector.h" #include "./utils/matrix.h" namespace neural_networks{ template struct Loss{ utils::Matrix sample_losses; Td data_losses; virtual utils::Vector forward(const utils::Matrix& output, const utils::Matrix& y) = 0; Td calculate(const utils::Matrix& output, const utils::Matrix& y){ // Calculate sample losses sample_losses = forward(output, y); // Calculate mean loss data_losses = numerics::mean(sample_losses); return data_losses; } }; } // end namespace neural_networks