/* * VisibleLayer.hpp * * Created on: 21.09.2014 * Author: jens */ #ifndef VISIBLELAYER_HPP_ #define VISIBLELAYER_HPP_ #include "Layer.hpp" #include class VisibleLayer : public Layer { public: VisibleLayer(uint32_t numUnits = 0, const double *pStatesInit = nullptr) : Layer(numUnits, pStatesInit) { } virtual ~VisibleLayer() { } double getEnergy(const Weights &weights) { uint32_t i; double energy = 0; for (i=0; i < getNumUnits(); i++) { energy -= weights.getBiasVisible()[i] * getStates()[i]; } return energy; } private: double accum(const Layer &layer, const Weights &weights, uint32_t index) const { uint32_t i; double sum = weights.getBiasVisible()[index]; const double *pStates = layer.getStates(); for (i=0; i < layer.getNumUnits(); i++) { sum += pStates[i] * weights.getWeights()[i][index]; } return sum; } }; #endif /* VISIBLELAYER_HPP_ */