/* * MLP.h * * Created on: 09.06.2011 * Author: sven */ #ifndef MLP_H_ #define MLP_H_ #include "MLPConfig.h" #include typedef vector Activity; typedef vector Delta; typedef vector Pattern; typedef vector Target; typedef vector Output; struct Trainingpair { Pattern mPattern; Target mTarget; }; typedef vector Traindata; class MLP { public: MLP(const MLPConfig&); virtual ~MLP(); void train(const Traindata&, const Traindata&, const uint32_t, const std::string&); void propagate(const Pattern&, Output& result); void stop(); private: uint32_t mStartHidden; uint32_t mStartOutput; uint32_t mNoNeuron; Weights mWeights; Activity mActivity; Delta mDelta; Weights mDeltaWeights; Weights mOldUpdate; double mMomentum; double mLernrate; const MLPConfig& mConfig; double mOldError; Weights mOldWeights; bool mTrainSuccess; bool mDoStop; boost::mutex mMutex; double sigmoid(const double&); void propagate(const Pattern&); void back_propagate(const Target&); void update_weight(); void reset_delta(); double validate(const Traindata&); void dump(); void writeWeightsToFile(const string&, const Weights&); bool isStop(); }; #endif /* MLP_H_ */