Proyecto Final - Turinmachin
Recreación del minijuego de matemáticas de Brain-Age usando redes neuronales
Loading...
Searching...
No Matches
interfaces.h
Go to the documentation of this file.
1#ifndef PROG3_NN_FINAL_PROJECT_V2025_01_LAYER_H
2#define PROG3_NN_FINAL_PROJECT_V2025_01_LAYER_H
3
5
6namespace utec::neural_network {
11 enum class LayerId : uint8_t {
12 ReLU = 0,
14 Dense = 2,
16 Kan = 4,
17 };
18
25 template <typename T>
26 struct IOptimizer {
28 virtual ~IOptimizer() = default;
29
35 virtual void update(algebra::Tensor<T, 2>& params,
36 const algebra::Tensor<T, 2>& gradients) = 0;
37
43 virtual void step() {}
44 };
45
51 template <typename T>
52 struct ILayer {
54 virtual ~ILayer() = default;
55
62
68 virtual auto backward(const algebra::Tensor<T, 2>& gradients) -> algebra::Tensor<T, 2> = 0;
69
76 virtual void update_params([[maybe_unused]] IOptimizer<T>& optimizer) {}
77
83 [[nodiscard]] virtual auto id() const -> LayerId = 0;
84
91 virtual void save([[maybe_unused]] std::ostream& out) const {};
92 };
93
101 template <typename T, size_t Dims>
102 struct ILoss {
104 virtual ~ILoss() = default;
105
110 virtual auto loss() const -> T = 0;
111
116 virtual auto loss_gradient() const -> algebra::Tensor<T, Dims> = 0;
117 };
118
119} // namespace utec::neural_network
120
121#endif
return p * x
Definition catch_amalgamated.cpp:321
Representa un tensor de tipo T y rango Rank.
Definition tensor.h:63
Representa un tensor de tipo T y rango Rank.
Definition tensor.h:63
Definition dense.h:15
Definition kan.h:53
Definition activation.h:16
Capa de activación Sigmoid. Convierte cada valor en el rango (0, 1) abierto usando la función logísti...
Definition activation.h:63
Capa de activación Softmax. Convierte un vector de valores en probabilidades las cualesal ser sumadas...
Definition activation.h:111
Definition tensor.h:49
Capa de activación de Rectified Linear Unit (ReLU). Los valores negativos del input se convierten en ...
Definition activation.h:14
LayerId
Identificador para los diferentes tipos de capas en la red neuronal. Se emplea uint8_t (unsigned 8-bi...
Definition interfaces.h:11
Interfaz para una capa de la red neuronal. Permite que distintas capas se conecten entre sí con polim...
Definition interfaces.h:52
virtual void update_params(IOptimizer< T > &optimizer)
Actualiza los parámetros internos de la capa (si tiene).
Definition interfaces.h:76
virtual void save(std::ostream &out) const
Guarda los parámetros internos de la capa en un flujo binario.
Definition interfaces.h:91
virtual auto id() const -> LayerId=0
Devuelve el tipo de la capa. Sirve para serialización o reconstrucción de la red.
virtual auto backward(const algebra::Tensor< T, 2 > &gradients) -> algebra::Tensor< T, 2 >=0
Propagación hacia atrás de la capa.
virtual auto forward(const algebra::Tensor< T, 2 > &x) -> algebra::Tensor< T, 2 >=0
Propagación hacia adelante de la capa.
virtual ~ILayer()=default
Destructor virtual.
Interfaz para una función de pérdida (loss). Se encarga de calcular qué tan mal lo hizo la red con re...
Definition interfaces.h:102
virtual auto loss_gradient() const -> algebra::Tensor< T, Dims >=0
Devuelve el gradiente de la pérdida respecto a la predicción.
virtual auto loss() const -> T=0
Devuelve el valor escalar de la pérdida.
virtual ~ILoss()=default
Destructor virtual.
Interfaz para definir un optimizador (ej. SGD, Adam, ...). Un optimizador se encarga de actualizar lo...
Definition interfaces.h:26
virtual ~IOptimizer()=default
Destructor virtual.
virtual void step()
Avanza el estado interno del optimizador si este lo permite. Sólo aplica a aquellos optimizadores que...
Definition interfaces.h:43
virtual void update(algebra::Tensor< T, 2 > &params, const algebra::Tensor< T, 2 > &gradients)=0
Actualiza los parámetros del modelo usando los gradientes.