1#ifndef PROG3_NN_FINAL_PROJECT_V2025_01_OPTIMIZER_H
2#define PROG3_NN_FINAL_PROJECT_V2025_01_OPTIMIZER_H
24 explicit SGD(T learning_rate = 0.01)
25 : learning_rate(learning_rate) {}
34 params = params - grads * learning_rate;
75 explicit Adam(T learning_rate = 0.001, T beta1 = 0.9, T beta2 = 0.999, T epsilon = 1e-8)
76 : learning_rate(learning_rate),
90 if (m.shape() != grads.
shape()) {
91 m.reshape(grads.
shape());
92 v.reshape(grads.
shape());
96 m = beta1 * m + (T{1} - beta1) * grads;
97 v = beta2 * v + (T{1} - beta2) * grads * grads;
102 params -= m_hat * learning_rate /
103 (v_hat.
apply([](
const T
x) {
return std::sqrt(
x); }) + epsilon);
return p * x
Definition catch_amalgamated.cpp:321
Representa un tensor de tipo T y rango Rank.
Definition tensor.h:63
auto shape() const noexcept -> const std::array< size_t, Rank > &
Definition tensor.h:179
constexpr auto apply(auto fn) const -> Tensor< T, Rank >
Aplica una funcion a todos los elementos del tensor.
Definition tensor.h:548
void step() override
Incrementa el contador de pasos. Es importante para las correcciones de sesgo de Adam....
Definition optimizer.h:111
Adam(T learning_rate=0.001, T beta1=0.9, T beta2=0.999, T epsilon=1e-8)
Constructor de Adam con parámetros configurables.
Definition optimizer.h:75
void update(algebra::Tensor< T, 2 > ¶ms, const algebra::Tensor< T, 2 > &grads) override
Actualiza los parámetros del modelo usando el algoritmo de Adam.
Definition optimizer.h:89
void update(algebra::Tensor< T, 2 > ¶ms, const algebra::Tensor< T, 2 > &grads) override
Actualiza los parámetros en función del gradiente.
Definition optimizer.h:33
SGD(T learning_rate=0.01)
Constructor del optimizador.
Definition optimizer.h:24
Capa de activación de Rectified Linear Unit (ReLU). Los valores negativos del input se convierten en ...
Definition activation.h:14
Interfaz para definir un optimizador (ej. SGD, Adam, ...). Un optimizador se encarga de actualizar lo...
Definition interfaces.h:26