jacobian

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

commit 70983f35d5e1f16bbbb24e8bd782ec07b485b389
parent d22e69ddc26c435859eee302f983f0891fe6171e
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Wed, 24 Jun 2020 21:34:25 -0700

Restructuring for biases

Diffstat:
Mbpnn.cpp | 15++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/bpnn.cpp b/bpnn.cpp @@ -13,7 +13,9 @@ Layer::Layer(float* vals, int batch_sz, int nodes) } bias = new Eigen::MatrixXd (1, nodes); for (int i = 0; i < nodes; i++) { - (*bias)(0,i) = 0.001; + for (int j = 0; j < batch_sz; j++) { + (*bias)(j,i) = 0.001; + } } } @@ -108,9 +110,7 @@ void Network::feedforward() } for (int i = 0; i < length-1; i++) { *layers[i+1].contents = (*layers[i].contents) * (*layers[i].weights); - for (int j = 0; j < layers[i+1].contents->rows(); j++) { - // layers[i+1].contents->row(j) += *layers[i+1].bias; TODO ADD ME BACK! - } + *layers[i+1].contents += *layers[i+1].bias; } for (int i = 1; i < length; i++) { for (int j = 0; j < layers[i].contents->rows(); j++) { @@ -162,13 +162,14 @@ void Network::backpropagate() deltas.push_back((*layers[length-2].contents).transpose() * gradients[0]); int counter = 1; for (int i = length-2; i >= 1; i--) { - gradients.push_back((gradients[counter-1] * layers[i].weights->transpose()).cwiseProduct(*layers[i].dZ)); - deltas.push_back((*layers[i-1].contents).transpose() * gradients[counter]); + gradients.push_back((gradients[counter-1] * layers[i].weights->transpose())); + deltas.push_back((gradients[counter].cwiseProduct(*layers[i].dZ))); counter++; } for (int i = 1; i < gradients.size(); i++) { Eigen::MatrixXd gradient = gradients[i]; - *layers[length-2-i].weights -= learning_rate * (deltas[i]); + *layers[length-2-i].weights -= learning_rate * (deltas[i] * *layers[i-1].contents).transpose()); + *layers[length-2-i].bias -= learning_rate * (deltas[i]); } }