25 #ifndef NORMALIZEDHEBBIANRULE_HPP_
26 #define NORMALIZEDHEBBIANRULE_HPP_
31 namespace neural_nets {
43 template <
typename eT=
float>
52 delta = MAKE_MATRIX_PTR(eT, cols_, rows_);
68 virtual void update(mic::types::MatrixPtr<eT> p_, mic::types::MatrixPtr<eT> x_, mic::types::MatrixPtr<eT> y_, eT learning_rate_ = 0.001) {
69 assert(p_->rows() == y_->rows());
70 assert(p_->cols() == x_->rows());
71 assert(x_->cols() == y_->cols());
76 std::cout<<
"x: " << (*x_).transpose() << std::endl;
77 std::cout<<
"y: " << (*y_).transpose() << std::endl;
78 std::cout<<
"przed update: " << (*p_)[0] << std::endl;
81 std::cout<<
"przed normalizacjÄ…: " << (*p_)[0] << std::endl;
83 (*p_) /= p_->squaredNorm();
84 std::cout<<
"po normalizacji: " << (*p_)[0] << std::endl;
93 virtual mic::types::MatrixPtr<eT>
calculateUpdate(mic::types::MatrixPtr<eT> x_, mic::types::MatrixPtr<eT> y_, eT learning_rate_) {
95 (*delta) = learning_rate_ * (*y_) * ((*x_).transpose());
98 (*delta) /= x_->cols();
virtual void update(mic::types::MatrixPtr< eT > p_, mic::types::MatrixPtr< eT > x_, mic::types::MatrixPtr< eT > y_, eT learning_rate_=0.001)
Updates according to classical Hebbian rule (wij += ni * x * y) with additional normalization.
Abstract class representing interface to optimization function.
mic::types::MatrixPtr< eT > delta
Calculated update.
NormalizedHebbianRule(size_t rows_, size_t cols_)
virtual ~NormalizedHebbianRule()
virtual mic::types::MatrixPtr< eT > calculateUpdate(mic::types::MatrixPtr< eT > x_, mic::types::MatrixPtr< eT > y_, eT learning_rate_)