/* ============================================================================== This is an automatically generated GUI class created by the Introjucer! Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Created with Introjucer version: 3.1.0 ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-13 by Raw Material Software Ltd. ============================================================================== */ #ifndef __RBM_COMPONENT__ #define __RBM_COMPONENT__ //[Headers] -- You can add your own extra header files here -- #include "JuceHeader.h" #include "DrawComponent.h" #include "Rbm.hpp" //[/Headers] class IRbm { public: IRbm() {} virtual ~IRbm() { } }; class RbmComponentListener { public: RbmComponentListener() {} virtual ~RbmComponentListener() { } virtual void onRbmEpochTrained(size_t progressPercent) = 0; }; //============================================================================== /** //[Comments] An auto-generated component, created by the Introjucer. Describe your class and how it works here! //[/Comments] */ class RbmComponent : public Component, public RbmListener, public DrawListener { public: //============================================================================== RbmComponent (Weights &weights, MatrixXd const &batch, RbmComponentListener &listener); ~RbmComponent(); //============================================================================== //[UserMethods] -- You can add your own custom methods in this section. //[/UserMethods] void paint (Graphics& g); void resized() override; void mouseMove (const MouseEvent& e) override; void mouseEnter (const MouseEvent& e) override; void mouseExit (const MouseEvent& e) override; void mouseDown (const MouseEvent& e) override; void mouseDrag (const MouseEvent& e) override; void mouseUp (const MouseEvent& e) override; void mouseDoubleClick (const MouseEvent& e) override; void mouseWheelMove (const MouseEvent& e, const MouseWheelDetails& wheel) override; void setDoLearnVariance(bool value); void setDoRaoBlackwell(bool enable); void setUseProbsForHiddenReconstruction(bool enable); void setUseVisibleGaussian(bool enable); void setDoSparse(bool enable); void setNormalizeData(bool enable); void setLambda(double value); void setSigmaDecay(double value); void setWeightDecay(double value); void setSparsity(double value); void setNumGibbs(size_t value); void setSigma(double value); void setMuWeights(double value); void setMuSparsity(double value); void setMomentum(double value); void batchchanged(); void setWeightsIndex(size_t index); size_t getWeightsIndex(); void setTrainingIndex(size_t index); size_t getTrainingIndex(); void copyReconstructionToTraining(); void redrawWeights(); void redrawReconstruction(); void redrawVariances(); void train(size_t numEpochs); RowVectorXd const& getTrainingData(); MatrixXd const& getHiddenBatch() { return m_pRbm->getHiddenBatch(); } Rbm::Params const& params() { return m_pRbm->params(); } private: //[UserVariables] -- You can add your own custom variables in this section. ScopedPointer m_pRbm; Weights &m_weights; RbmComponentListener &m_listener; ScopedPointer DrawTraining; ScopedPointer DrawReconstruction; ScopedPointer DrawWeights; ScopedPointer DrawVars; ScopedPointer DrawHidden; size_t m_currWeightIndexToDraw; size_t m_currTrainingIndexToDraw; void onEpochTrained(const Rbm &obj) override; void onDraw(DrawComponent &obj) override; //[/UserVariables] //============================================================================== //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RbmComponent) }; //[EndFile] You can add extra defines here... //[/EndFile] #endif // __RBM_COMPONENT__