aboutsummaryrefslogtreecommitdiff
path: root/SimpleRN.cpp
blob: 0e10c22cf4a3ef86d9e14e520de3513fc7f35c52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "SimpleRN.hpp"

SimpleRN::SimpleRN(unsigned inputCount, unsigned hiddenNodeCount, unsigned outputCount, NodeClass nodeClass, bool zeroed)
:   SingleMLP(0, 0, 0, NEURON, true)
{
    m_context.resize(hiddenNodeCount, 0.f);

    m_hiddenLayer = NodeLayer(inputCount + hiddenNodeCount, hiddenNodeCount, nodeClass, zeroed);
    m_outputLayer = NodeLayer(hiddenNodeCount, outputCount, nodeClass, zeroed);

    m_inputCount = inputCount;
    m_hiddenNodeCount = hiddenNodeCount;
    m_outputCount = outputCount;
    m_nodeClass = nodeClass;
}

std::vector<float> SimpleRN::io(const std::vector<float> &inputs)
{
    std::vector<float> response;

    if (inputs.size() != m_inputCount)
    {
        return response;
    }

    response.insert(response.end(), inputs.begin(), inputs.end());
    response.insert(response.end(), m_context.begin(), m_context.end());

    response = m_hiddenLayer.io(response);

    m_context = response;
    response = m_outputLayer.io(response);

    return response;
}