25 #ifndef BINARYCORRELATORLEARNINGRULE_HPP_
26 #define BINARYCORRELATORLEARNINGRULE_HPP_
31 namespace neural_nets {
42 template <
typename eT=
float>
51 delta = MAKE_MATRIX_PTR(eT, rows_, cols_);
65 virtual mic::types::MatrixPtr<eT>
calculateUpdate(mic::types::MatrixPtr<eT> x_, mic::types::MatrixPtr<eT> y_, eT ni_aa = 0.1) {
67 size_t N_on = y_->sum();
69 eT ni_ia = ni_aa * N_on * (x_->rows() - N_on);
74 for (
size_t b=0; b< (size_t)x_->cols(); b++) {
75 for (
size_t i=0; i< (size_t)x_->rows(); i++) {
76 for (
size_t j=0; j< (size_t)y_->rows(); j++) {
77 if ((*y_)(j,b) && (*x_)(i,b))
78 (*delta)(j,i) += ni_aa;
79 else if ((*y_)(j,b) || (*x_)(i,b))
80 (*delta)(j,i) -= ni_ia;
91 mic::types::MatrixPtr<eT>
delta;
Updates according to classical Hebbian rule (wij += ni * x * y).
virtual mic::types::MatrixPtr< eT > calculateUpdate(mic::types::MatrixPtr< eT > x_, mic::types::MatrixPtr< eT > y_, eT ni_aa=0.1)
Abstract class representing interface to optimization function.
mic::types::MatrixPtr< eT > delta
Calculated update.
virtual ~BinaryCorrelatorLearningRule()
BinaryCorrelatorLearningRule(size_t rows_, size_t cols_)