modified learning algorithms

This commit is contained in:
2016-02-24 17:30:18 +01:00
parent bf4387a98f
commit 47de0fa08b
8 changed files with 58 additions and 65 deletions

View File

@@ -13,13 +13,14 @@ namespace Learning {
class BackPropagation {
public:
BackPropagation(): learningCoefficient(0.4) {
inline BackPropagation(FeedForward::Network &feedForwardNetwork): network(feedForwardNetwork), learningCoefficient(0.4), deltas() {
resize();
}
virtual ~BackPropagation() {
}
void teach(FeedForward::Network &n,const std::vector<float> &input, const std::vector<float> &output);
void teach(const std::vector<float> &input, const std::vector<float> &output);
inline virtual void setLearningCoefficient (const float& coefficient) { learningCoefficient=coefficient; }
@@ -27,7 +28,22 @@ namespace Learning {
inline virtual float correction(const float & expected, const float &computed) const {
return expected-computed;
};
inline void resize() {
if(deltas.size()!=network.size())
deltas.resize(network.size());
for(std::size_t i=0; i < network.size(); i++) {
if(deltas[i].size()!=network[i].size())
deltas[i].resize(network[i].size());
}
}
FeedForward::Network &network;
float learningCoefficient;
std::vector<std::vector<float>> deltas;
};
}
}