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:
2026-05-16 20:37:05 +02:00
parent 412a854c65
commit d2fe8aa65c
50 changed files with 489 additions and 1482 deletions
@@ -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));
}