Newer
Older
/**
* This file contains an interface for all learning methods in the library
*
* @author Michal Kravčenko
* @date 12.8.18 -
*/
#ifndef LIB4NEURO_ILEARNINGMETHODS_H
#define LIB4NEURO_ILEARNINGMETHODS_H
#include <vector>
#include "../ErrorFunction/ErrorFunctions.h"
Martin Beseda
committed
namespace lib4neuro {
class LearningMethod {
public:
/**
* Runs the method specific learning algorithm minimizing the given error function
*/
virtual void optimize(lib4neuro::ErrorFunction& ef,
std::ofstream* ofs = nullptr) = 0;
/**
* Updates the optimal weight&bias settings in the passed vector
*/
virtual std::shared_ptr<std::vector<double>> get_parameters() = 0;
Martin Beseda
committed
};
class GradientLearningMethod : public LearningMethod {

Michal Kravcenko
committed
Martin Beseda
committed
public:
/**
* Runs the method specific learning algorithm minimizing the given error function
*/
virtual void optimize(ErrorFunction& ef,
std::ofstream* ofs = nullptr) override;
};
}
#endif //LIB4NEURO_ILEARNINGMETHODS_H