17 #ifndef NEURALNETWORK_H_ 18 #define NEURALNETWORK_H_ 20 #include <Eigen/Dense> 27 template<
typename TYPE>
30 Eigen::Matrix<TYPE, Eigen::Dynamic, Eigen::Dynamic>
weights;
31 Eigen::Matrix<TYPE, Eigen::Dynamic, 1>
bias;
34 Eigen::Matrix<TYPE, Eigen::Dynamic, 1>
output;
41 weights.resize(inputSize, outputSize);
42 bias.resize(1,outputSize);
43 output.resize(1,outputSize);
51 template <
typename Derived>
52 NeuralLayer(
const Eigen::MatrixBase<Derived> &weightsIn,
const Eigen::MatrixBase<Derived> &biasIn) {
55 output.resize(bias.rows(),1);
66 virtual Eigen::Matrix<TYPE, Eigen::Dynamic, 1> &
activate(
const Eigen::Matrix<TYPE, Eigen::Dynamic, 1> &input) {
72 output.noalias()+=weights*input;
80 return weights.rows();
85 return weights.cols();
92 template<
typename TYPE>
107 template <
typename Derived>
108 SigmoidLayer(
const Eigen::MatrixBase<Derived> &weightsIn,
const Eigen::MatrixBase<Derived> &biasIn) :
NeuralLayer<TYPE>(weightsIn, biasIn) {
119 virtual Eigen::Matrix<TYPE, Eigen::Dynamic, 1> &
activate(
const Eigen::Matrix<TYPE, Eigen::Dynamic, 1> &input) {
130 template<
typename TYPE>
145 template <
typename Derived>
146 TanhLayer(
const Eigen::MatrixBase<Derived> &weightsIn,
const Eigen::MatrixBase<Derived> &biasIn) :
NeuralLayer<TYPE>(weightsIn, biasIn) {
157 virtual Eigen::Matrix<TYPE, Eigen::Dynamic, 1> &
activate(
const Eigen::Matrix<TYPE, Eigen::Dynamic, 1> &input) {
221 template<
typename TYPE>
236 int layerCount=layers.size();
239 layers[0]->activate(input);
240 for (
int i=1; i<layerCount; i++) {
248 #endif // NEURALNETWORK_H_ Eigen::Matrix< TYPE, Eigen::Dynamic, Eigen::Dynamic > weights
The neural weights for this layer.
NeuralLayer(int inputSize, int outputSize)
Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > bias
The biases for this layer.
void activate(vector< NeuralLayer< TYPE > *> &layers, Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > &input)
virtual Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > & activate(const Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > &input)
virtual ~NeuralLayer(void)
Destructor.
NeuralNetwork(void)
Constructor.
virtual ~NeuralNetwork(void)
Destructor.
Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > output
The output from this layer.
SigmoidLayer(int inputSize, int outputSize)
TanhLayer(const Eigen::MatrixBase< Derived > &weightsIn, const Eigen::MatrixBase< Derived > &biasIn)
TanhLayer(int inputSize, int outputSize)
virtual ~SigmoidLayer(void)
Destructor.
SigmoidLayer(const Eigen::MatrixBase< Derived > &weightsIn, const Eigen::MatrixBase< Derived > &biasIn)
virtual Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > & activate(const Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > &input)
virtual Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > & activate(const Eigen::Matrix< TYPE, Eigen::Dynamic, 1 > &input)
virtual ~TanhLayer(void)
Destructor.
NeuralLayer(const Eigen::MatrixBase< Derived > &weightsIn, const Eigen::MatrixBase< Derived > &biasIn)