diff --git a/source/MainComponent.cpp b/source/MainComponent.cpp index 32a1e7c..cc4ae01 100644 --- a/source/MainComponent.cpp +++ b/source/MainComponent.cpp @@ -530,6 +530,7 @@ void MainComponent::buttonClicked (Button* buttonThatWasClicked) //[UserButtonCode_loadButton] -- add your button handler code here.. m_stack = new Stack(std::string(projectNameLabel->getText().getCharPointer())); m_stack->load(this); + m_stack->loadWeights(); m_rbmSelect->clear(dontSendNotification); for (int id=0; id < m_stack->numLayers(); id++) @@ -810,69 +811,14 @@ void MainComponent::mouseWheelMove (const MouseEvent& e, const MouseWheelDetails //[/UserCode_mouseWheelMove] } - - //[MiscUserCode] You can add your own definitions of your custom methods or any other code here... void MainComponent::save () { + m_stack->saveTraining(m_trainingData); m_stack->saveWeights(); m_stack->save(); } -void MainComponent::create(juce::String const &projectName) -{ - m_stack = new Stack(std::string(projectName.getCharPointer())); - -#if 0 - int id = m_rbmSelect->getSelectedId()-1; - bool shouldAddItem = true; - if (id == 0) - { - m_rbmSelect->clear(dontSendNotification); - m_rbmSelect->addItem(String(id), id+1); - m_rbmSelect->setSelectedId(id+1, dontSendNotification); - - for (size_t i=0; i < DBN_SIZE; i++) - { - m_weights[i] = nullptr; - m_pRbmComponent[i] = nullptr; - } - if (!projectName.isEmpty()) - { - m_weights[id] = new Weights((String(projectName + String(".weights.dat"))).toUTF8()); - loadTraining((String(projectName + String(".trainingStates.dat"))).toUTF8()); - } - else - { - m_weights[id] = new Weights(numVisibleLabel->getText().getIntValue(), numVisibleYLabel->getText().getIntValue(), numHiddenLabel->getText().getIntValue()); - } - addAndMakeVisible(m_pRbmComponent[id] = new RbmComponent(*m_weights[id], m_trainingData, *this)); - } - else - { - shouldAddItem = m_pRbmComponent[id] == nullptr; - m_weights[id] = nullptr; - m_pRbmComponent[id] = nullptr; - m_weights[id] = new Weights(m_weights[id-1]->getNumHidden(), 1, numHiddenLabel->getText().getIntValue()); - addAndMakeVisible(m_pRbmComponent[id] = new RbmComponent(*m_weights[id], m_pRbmComponent[id-1], *this)); - } - m_pLayer = m_pRbmComponent[id]; - m_weightsCurr = m_weights[id]; - m_pLayer->setBounds (16, 140*id+16, 430, 130); - m_pLayer->batchchanged(); - m_pLayer->redrawReconstruction(); - m_pLayer->redrawWeights(); - - if (((id+1) < DBN_SIZE) and shouldAddItem) - m_rbmSelect->addItem(String(id+1), id+2); -#endif - updateControls(); -} - -void MainComponent::destroy() -{ -} - const juce::String& MainComponent::getBaseDir() { struct passwd *pw = getpwuid(getuid()); diff --git a/source/MainComponent.hpp b/source/MainComponent.hpp index 4f742ab..6379db9 100644 --- a/source/MainComponent.hpp +++ b/source/MainComponent.hpp @@ -90,8 +90,6 @@ private: int m_weightIndex; int m_trainingIndex; void save(); - void create(juce::String const &projectName); - void destroy(); const juce::String& getBaseDir(); void run(); String m_baseDir; diff --git a/source/Stack.cpp b/source/Stack.cpp index 2fe58c0..1df42a7 100644 --- a/source/Stack.cpp +++ b/source/Stack.cpp @@ -217,10 +217,9 @@ arma::mat Stack::loadTraining() { uint32_t numTraining = 0; uint32_t numVisible = 0; - FILE *pFile; std::string filename = m_name + ".training.dat"; - pFile = fopen(filename.c_str(), "r"); + FILE *pFile = fopen(filename.c_str(), "r"); if (!pFile) { @@ -257,6 +256,33 @@ arma::mat Stack::loadTraining() return data; } +void Stack::saveTraining(const arma::mat& batch) +{ + std::string filename = m_name + ".training.dat"; + FILE *pFile = fopen(filename.c_str(), "w"); + + if (!pFile) + { + std::cout << "Could not open " << filename << "!" << std::endl; + return; + } + + fprintf(pFile, "%u\n", (uint32_t)batch.n_rows); + fprintf(pFile, "%u\n", (uint32_t)batch.n_cols); + + uint32_t i, j; + + for (i=0; i < batch.n_rows; i++) + { + for (j=0; j < batch.n_cols; j++) + { + fprintf(pFile, "%3.6f\n", batch(i, j)); + } + } + + fclose(pFile); +} + size_t Stack::numTraining(const arma::mat &batch) { return batch.n_rows; diff --git a/source/Stack.hpp b/source/Stack.hpp index c08fe82..49956cd 100644 --- a/source/Stack.hpp +++ b/source/Stack.hpp @@ -56,6 +56,7 @@ public: static void addTraining(arma::mat &batch, const arma::mat &toAdd); static void delTraining(arma::mat &batch, int index); arma::mat loadTraining(); + void saveTraining(const arma::mat &batch); private: std::string m_name;