27 #ifndef CROSSENTROPYLOSS_HPP_
28 #define CROSSENTROPYLOSS_HPP_
34 namespace neural_nets {
42 template <
typename dtype=
float>
48 dtype
calculateLoss (mic::types::MatrixPtr<dtype> target_y_, mic::types::MatrixPtr<dtype> predicted_y_) {
50 assert(predicted_y_->size() == target_y_->size());
55 for (
size_t i=0; i <(size_t)predicted_y_->size(); i++) {
57 loss -= (*target_y_)[i] * std::log2((*predicted_y_)[i] + eps);
68 mic::types::MatrixPtr<dtype>
calculateGradient (mic::types::MatrixPtr<dtype> target_y_, mic::types::MatrixPtr<dtype> predicted_y_) {
70 assert(predicted_y_->size() == target_y_->size());
73 mic::types::MatrixPtr<dtype> dy = MAKE_MATRIX_PTR(dtype, predicted_y_->rows(), predicted_y_->cols());
74 for (
size_t i=0; i <(size_t)predicted_y_->size(); i++) {
76 (*dy)[i] = (*predicted_y_)[i] - (*target_y_)[i];
Class representing a cross-entropy loss function (classification).
mic::types::MatrixPtr< dtype > calculateGradient(mic::types::MatrixPtr< dtype > target_y_, mic::types::MatrixPtr< dtype > predicted_y_)
Gradient calculation for cross-entropy.
Abstract class representing a loss function. Defines interfaces.
dtype calculateLoss(mic::types::MatrixPtr< dtype > target_y_, mic::types::MatrixPtr< dtype > predicted_y_)
Calculates cross entropy(using log) and returns cross-entropy error (CE).