Files
Rbm-legacy/Source/VisibleLayer.hpp
T
jens f62f1283f8 further development
git-svn-id: http://moon:8086/svn/software/trunk/projects/RBM@17 b431acfa-c32f-4a4a-93f1-934dc6c82436
2014-10-04 19:09:35 +00:00

55 lines
924 B
C++

/*
* VisibleLayer.hpp
*
* Created on: 21.09.2014
* Author: jens
*/
#ifndef VISIBLELAYER_HPP_
#define VISIBLELAYER_HPP_
#include "Layer.hpp"
#include <cmath>
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_ */