7 #ifndef RECURRENTNEURALNETWORK_H__
8 #define RECURRENTNEURALNETWORK_H__
10 #include "Perceptron.h"
53 size_t GetNeuronsPerGate()
const;
54 size_t GetForgetGateStartNeuronIndex()
const;
55 size_t GetInputGateStartNeuronIndex()
const;
56 size_t GetOutputGateStartNeuronIndex()
const;
57 size_t GetCandidateCellStateStartNeuronIndex()
const;
58 size_t GetOutputUnitStartNeuronIndex()
const;
88 size_t GetCellMemorySize()
const;
90 void RunForward(
const std::vector<double>& input)
override;
97 void AddHiddenLayer(
size_t neuron_count) =
delete;
107 void AddHiddenLayer(
size_t cell_count,
108 const std::vector<size_t>& cell_memory_sizes = {});
113 void ConnectFully()
override;
117 void AllocateCellStates();
118 bool AreCellStatesAllocated()
const;
120 void UpdateCellState(
const LongShortTermMemoryCell& cell);
122 size_t AddCellMemoryStates(
size_t count);
124 size_t GetCellCount()
const;
125 LongShortTermMemoryCell& GetCell(
size_t index);
126 size_t GetCellLayerCount()
const;
127 CellLayer& GetCellLayer(
size_t index);
137 size_t input_connection_count,
138 size_t output_connection_count);
144 size_t neurons_per_gate,
145 ActivationFunctionType activation_function,
146 size_t input_connection_count,
147 size_t output_connection_count);
150 static constexpr
size_t DefaultCellMemorySize = 200;
152 std::vector<CellLayer> layers_;
153 std::vector<LongShortTermMemoryCell> cells_;
154 std::vector<double> cell_states_;
155 size_t cell_states_count_ = 0;
156 size_t cell_memory_size_ = DefaultCellMemorySize;
157 bool is_allocated_ =
false;
162 #endif // RECURRENTNEURALNETWORK_H__
size_t neuron_count
Definition: RecurrentNeuralNetwork.h:39
std::vector< double > & GetCellStates()
Definition: RecurrentNeuralNetwork.cc:453
void InitializeCellNeuronsOneGate(size_t neuron_start_index, size_t neurons_per_gate, ActivationFunctionType activation_function, size_t input_connection_count, size_t output_connection_count)
Definition: RecurrentNeuralNetwork.cc:121
size_t cell_state_start_index
Definition: RecurrentNeuralNetwork.h:45
size_t cell_start_index
Definition: RecurrentNeuralNetwork.h:65
size_t neuron_start_index
Definition: RecurrentNeuralNetwork.h:32
void Construct() override
Definition: RecurrentNeuralNetwork.cc:310
Definition: Perceptron.h:23
Definition: RecurrentNeuralNetwork.h:25
Definition: RecurrentNeuralNetwork.h:61
size_t cell_count
Definition: RecurrentNeuralNetwork.h:70
void InitializeHiddenNeurons() override
Definition: RecurrentNeuralNetwork.cc:174
void FixNeuronConnectionIndices() override
Definition: RecurrentNeuralNetwork.cc:180
void InitializeCellNeurons(const LongShortTermMemoryCell &cell, size_t input_connection_count, size_t output_connection_count)
Definition: RecurrentNeuralNetwork.cc:142
void SetCellMemorySize(size_t memory_size)
Definition: RecurrentNeuralNetwork.cc:50
Definition: RecurrentNeuralNetwork.h:27
void RunForward(const std::vector< double > &input) override
Definition: RecurrentNeuralNetwork.cc:433
size_t cell_state_count
Definition: RecurrentNeuralNetwork.h:51