Fittet new functions to everying in neural networks. Still need to optimise for uint64_t vs int64_t and vec vs mat in some places.
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include "./core/omp_config.h"
|
||||
#include "core/omp_config.h"
|
||||
|
||||
#include "./utils/vector.h"
|
||||
#include "./utils/matrix.h"
|
||||
#include "./utils/random.h"
|
||||
#include "utils/vector.h"
|
||||
#include "utils/matrix.h"
|
||||
#include "utils/random.h"
|
||||
|
||||
|
||||
namespace neural_networks{
|
||||
@@ -40,20 +40,23 @@ namespace neural_networks{
|
||||
Dense_Layer(const uint64_t n_inputs, const uint64_t n_neurons){
|
||||
|
||||
weights.random(n_inputs, n_neurons, -1, 1);
|
||||
//weights = numerics::random_matrix(n_inputs, n_neurons, -1, 1);
|
||||
biases.resize(n_neurons, T{0});
|
||||
|
||||
}
|
||||
|
||||
void forward(const utils::Matrix<T>& inputs){
|
||||
_inputs = inputs;
|
||||
outputs = numerics::matadd(numerics::matmul_auto(inputs, weights), biases, "row");
|
||||
//std::cout << "HERE" << std::endl;
|
||||
outputs = numerics::add_rowwise(numerics::matmul(inputs, weights), biases);
|
||||
}
|
||||
|
||||
void backward(const utils::Matrix<T>& dvalues){
|
||||
// Gradients on parameters
|
||||
dweights = numerics::matmul(numerics::transpose(_inputs), dvalues);
|
||||
dbiases = numerics::matsum(dvalues, "row");
|
||||
dbiases = numerics::sum_rowwise(dvalues);
|
||||
//Gradient on values
|
||||
|
||||
dinputs = numerics::matmul(dvalues, numerics::transpose(weights));
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user