Clase que representa una red neuronal completamente conectada.
More...
#include <neural_network.h>
|
| NeuralNetwork () |
| Constructor por defecto.
|
template<typename L, typename... Args> |
void | add_layer (Args &&... args) |
| Agrega una nueva capa a la red.
|
template<template< typename... > class LossType, template< typename... > class OptimizerType = SGD> |
void | train (const algebra::Tensor< T, 2 > &x, const algebra::Tensor< T, 2 > &y, const size_t epochs, const size_t batch_size, T learning_rate, std::mt19937 &rng) |
| Entrena la red neuronal usando descenso por lotes.
|
auto | predict (const algebra::Tensor< T, 2 > &X) -> algebra::Tensor< T, 2 > |
| Realiza una predicción sobre un conjunto de datos.
|
void | save (std::ostream &out) const |
| Guarda el modelo en un flujo de salida binario.
|
|
static auto | load (std::istream &in) -> NeuralNetwork< T > |
| Carga una red neuronal desde un flujo de entrada binario.
|
template<typename T>
class NeuralNetwork< T >
Clase que representa una red neuronal completamente conectada.
- Template Parameters
-
T | Tipo de dato para los pesos y cálculos (float, double, etc.). |
◆ NeuralNetwork()
◆ add_layer()
template<typename T>
template<typename L, typename... Args>
Agrega una nueva capa a la red.
- Template Parameters
-
L | Tipo de capa (e.g., Dense, ReLU). |
Args | Tipos de argumentos para el constructor de la capa. |
- Parameters
-
args | Argumentos para inicializar la capa. @complexity O(1). |
◆ load()
Carga una red neuronal desde un flujo de entrada binario.
- Parameters
-
in | Flujo de entrada desde el cual se carga la red. |
- Returns
- Instancia de NeuralNetwork cargada con sus capas (y pesos si es que la capa lo permite). @complexity O(L*s), donde L es el número de capas y s el tamaño serializado de cada una.
◆ predict()
Realiza una predicción sobre un conjunto de datos.
- Parameters
-
- Returns
- Tensor con la predicción de salida. @complexity O(L*f), donde L es el número de capas y f es el costo del forward.
◆ save()
Guarda el modelo en un flujo de salida binario.
- Parameters
-
out | Flujo de salida donde se guarda la red. @complexity O(L*s), donde s es el tamaño serializado de cada capa. |
◆ train()
template<typename T>
template<template< typename... > class LossType, template< typename... > class OptimizerType = SGD>
void utec::neural_network::NeuralNetwork< T >::train |
( |
const algebra::Tensor< T, 2 > & | x, |
|
|
const algebra::Tensor< T, 2 > & | y, |
|
|
const size_t | epochs, |
|
|
const size_t | batch_size, |
|
|
T | learning_rate, |
|
|
std::mt19937 & | rng ) |
|
inline |
Entrena la red neuronal usando descenso por lotes.
- Template Parameters
-
LossType | Tipo de función de pérdida (ej. MSELoss, BCELoss, ...). |
OptimizerType | Tipo de optimizador (ej. SGD, Adam, ...). Por defecto es SGD. |
- Parameters
-
x | Datos de entrada. |
y | Etiquetas esperadas. |
epochs | Número de épocas de entrenamiento. |
batch_size | Tamaño del batch. |
learning_rate | Tasa de aprendizaje. |
rng | Generador aleatorio para mezclar los datos. @complexity O(e*(n/b)*L*(f+b+u))), donde:
- e: número de épocas
- n: número total de muestras
- b: batch size
- L: número de capas
- f: costo forward de una capa
- b: costo backward de una capa
- u: costo de actualización de parámetros por capa
|
The documentation for this class was generated from the following file: