diff --git a/Source/Rbm.cpp b/Source/Rbm.cpp index 7858895..ddc8039 100644 --- a/Source/Rbm.cpp +++ b/Source/Rbm.cpp @@ -261,11 +261,14 @@ void Rbm::train(size_t numEpochs, size_t miniBatchSize, bool &doStop) updateHiddenBatch(); - MatrixXd vis = m_h * m_w.weights().transpose(); + MatrixXd h = __batch * m_w.weights(); + h += m_w.hiddenBias().replicate(__batch.rows(), 1); + + MatrixXd vis = h * m_w.weights().transpose(); vis += m_w.visibleBias().replicate(__batch.rows(), 1); MatrixXd diffErr = __batch - probsLogistic(vis); diffErr.array() *= diffErr.array(); - double err = diffErr.colwise().sum().mean(); + double err = diffErr.array().mean(); cout << "error (total) = " << err << endl; onProgressChanged();