jacobian

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 43e2b13bd0546c2b75a1955422bece2c4b21ec06
parent 1a9db6adece3fe6a47ca89f6a80b4ad80305523f
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Sun, 12 Jul 2020 10:36:57 -0700

Added crossentropy cost function

Diffstat:
Msrc/bpnn.cpp | 18++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/bpnn.cpp b/src/bpnn.cpp @@ -184,16 +184,22 @@ void Network::list_net() float Network::cost() { - // float sum = 0; + float sum = 0; float reg = 0; // Regularization term - // for (int i = 0; i < layers[length-1].contents->rows(); i++) { - // sum += ((*labels)(i, 0) - (*layers[length-1].contents)(i, 0)) * ((*labels)(i, 0) - (*layers[length-1].contents)(i, 0)); - // } + for (int i = 0; i < layers[length-1].contents->rows(); i++) { + float tempsum = 0; + for (int j = 0; j < layers[length-1].contents->cols(); j++) { + float truth; + if (j==(*labels)(i,0)) truth = (*labels)(i,0); + else truth = 0; + tempsum += truth * log((*layers[length-1].contents)(i,j)) + } + sum+=tempsum; + } for (int i = 0; i < layers.size()-1; i++) { reg += (layers[i].weights->cwiseProduct(*layers[i].weights)).sum(); } - // return ((1.0/batch_size) * sum) + (1/2*lambda*reg); - return (1/2*lambda*reg); + return ((1.0/batch_size) * sum) + (1/2*lambda*reg); } float Network::accuracy()