- bring back calcContextBatch

git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@840 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-01-19 11:01:37 +00:00
parent 22833df1d8
commit 963ee3cd9d
3 changed files with 20 additions and 2 deletions
+17
View File
@@ -118,6 +118,23 @@ arma::mat Layer::vc_to_v(const arma::mat& vc) const
return arma::reshape(vc, 1, numVisible() - m_numContext); return arma::reshape(vc, 1, numVisible() - m_numContext);
} }
void Layer::calcContextBatch(arma::mat& batch)
{
size_t numTraining = batch.n_rows;
if (m_numContext > 0 and numTraining > 0)
{
for (int i = 1; i < numTraining; i++)
{
arma::mat v = batch.row(i - 1);
arma::mat h = arma::zeros(1, numHidden());
gibbs_vh(v, h);
arma::mat training_with_ctx = arma::join_rows(batch.row(i).cols(0, numVisible() - m_numContext - 1), h);
batch.row(i) = training_with_ctx;
}
}
}
void Layer::train(const arma::mat& batch, IListener* pListener) void Layer::train(const arma::mat& batch, IListener* pListener)
{ {
std::cout << m_name << ": " << " Training of layer " << std::to_string(id()) << std::endl; std::cout << m_name << ": " << " Training of layer " << std::to_string(id()) << std::endl;
+2 -1
View File
@@ -48,7 +48,8 @@ public:
bool weightsLoad(std::string const &dir, std::string const &prj); bool weightsLoad(std::string const &dir, std::string const &prj);
bool weightsSave(std::string const &dir, std::string const &prj); bool weightsSave(std::string const &dir, std::string const &prj);
void train(arma::mat const &batch, IListener *pListener=nullptr); void calcContextBatch(arma::mat &batch);
void train(arma::mat const &batch, IListener *pListener=nullptr);
arma::mat to_h_gibbs(const arma::mat& v_probs); arma::mat to_h_gibbs(const arma::mat& v_probs);
arma::mat to_v_gibbs(const arma::mat& h_probs); arma::mat to_v_gibbs(const arma::mat& h_probs);
+1 -1
View File
@@ -903,7 +903,7 @@ const juce::String& MainComponent::getBaseDir()
void MainComponent::run() void MainComponent::run()
{ {
trainButton->setButtonText (TRANS("Stop")); trainButton->setButtonText (TRANS("Stop"));
// m_pLayer->calcContextBatch(m_stack->trainingBatch()); m_pLayer->calcContextBatch(m_stack->trainingBatch());
m_stack->train(m_pLayer->id(), m_stack->trainingBatch(), this); m_stack->train(m_pLayer->id(), m_stack->trainingBatch(), this);
trainButton->setButtonText (TRANS("Train")); trainButton->setButtonText (TRANS("Train"));
} }