1#ifndef PROG3_NN_FINAL_PROJECT_V2025_01_LAYER_REGISTRY_H
2#define PROG3_NN_FINAL_PROJECT_V2025_01_LAYER_REGISTRY_H
9#include <unordered_map>
24 using LayerCreator = std::function<std::unique_ptr<ILayer<T>>(std::istream&)>;
35 get_map()[id] = std::move(creator);
46 static auto create(
LayerId id, std::istream& in) -> std::unique_ptr<ILayer<T>> {
47 auto it = get_map().find(
id);
48 if (it == get_map().end()) {
49 throw std::invalid_argument(
"Invalid layer ID");
52 return it->second(in);
60 static auto get_map() ->
auto& {
61 static std::unordered_map<LayerId, LayerCreator> map;
77 [](std::istream&) {
return std::make_unique<ReLU<T>>(); });
79 LayerId::Sigmoid, [](std::istream&) {
return std::make_unique<Sigmoid<T>>(); });
81 LayerId::Softmax, [](std::istream&) {
return std::make_unique<Softmax<T>>(); });
static auto load(std::istream &in) -> Dense< T >
Carga la red neuronal en formato pp20.
Definition dense.h:139
static auto load(std::istream &in) -> Kan< T >
Definition kan.h:219
Registro de tipos de capas para deserialización.
Definition layer_registry.h:22
static auto create(LayerId id, std::istream &in) -> std::unique_ptr< ILayer< T > >
Crea una instancia de una capa registrada a partir de su ID. Busca la función asociada al ID proporci...
Definition layer_registry.h:46
static void register_layer(LayerId id, LayerCreator creator)
Registra un tipo de capa junto con su función de construcción. Se asocia el identificador con una fun...
Definition layer_registry.h:34
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
@ Sigmoid
Definition interfaces.h:13
@ Softmax
Definition interfaces.h:15
@ Dense
Definition interfaces.h:14
@ ReLU
Definition interfaces.h:12
@ Kan
Definition interfaces.h:16
void register_all_layers()
Registra todas las capas disponibles en el sistema. Llamado al inicio del programa para asegurar que ...
Definition layer_registry.h:75