-autoscale of data during draw. data remains unchanged

git-svn-id: http://moon:8086/svn/software/trunk/projects/RBM@41 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2014-10-25 21:08:57 +00:00
parent 4d1f2f2e0c
commit 376f2dfa35
4 changed files with 31 additions and 23 deletions
+28 -4
View File
@@ -229,21 +229,45 @@ const VectorXd& DrawComponent::getData ()
void DrawComponent::setData (const VectorXd& data) void DrawComponent::setData (const VectorXd& data)
{ {
double a;
m_data = data; m_data = data;
DrawData(data);
}
for (int i=0; i < m_height; i++) void DrawComponent::DrawData (const VectorXd& data)
{
double a;
VectorXd temp = data;
double min = +1E12;
double max = -1E12;
for (int i=0; i < m_width*m_height; i++)
{
min = std::min<double>(min, (double)temp[i]);
max = std::max<double>(max, (double)temp[i]);
}
for (int i=0; i < m_width*m_height; i++)
{
temp[i] -= min;
}
for (int i=0; i < m_width*m_height; i++)
{
temp[i] /= (max-min);
}
for (int i=0; i < m_height; i++)
{ {
for (int j=0; j < m_width; j++) for (int j=0; j < m_width; j++)
{ {
a = std::min<double>(std::max<double>((double)m_data[i*m_width + j], 0), 1); a = std::min<double>(std::max<double>((double)temp[i*m_width + j], 0), 1);
m_pG->setColour(Colour(Colours::white).greyLevel(a)); m_pG->setColour(Colour(Colours::white).greyLevel(a));
m_pG->fillRect(m_scaleX*j, m_scaleY*i, m_scaleX, m_scaleY); m_pG->fillRect(m_scaleX*j, m_scaleY*i, m_scaleX, m_scaleY);
} }
} }
repaint(); repaint();
} }
//[/MiscUserCode] //[/MiscUserCode]
+1
View File
@@ -57,6 +57,7 @@ public:
void setListener(DrawListener *pListener); void setListener(DrawListener *pListener);
void drawAt(int x, int y, bool setColor); void drawAt(int x, int y, bool setColor);
void setData(const VectorXd& data); void setData(const VectorXd& data);
void DrawData(const VectorXd& data);
const VectorXd& getData(); const VectorXd& getData();
void clear(); void clear();
//[/UserMethods] //[/UserMethods]
+1 -19
View File
@@ -859,25 +859,7 @@ void MainComponent::redrawReconstruction()
void MainComponent::redrawWeights(int index) void MainComponent::redrawWeights(int index)
{ {
VectorXd w = m_weights.weights().col(index); VectorXd w = m_weights.weights().col(index);
VectorXd temp = w; DrawWeights->setData(w);
double min = +1E12;
double max = -1E12;
for (int i=0; i < m_vNumX*m_vNumY; i++)
{
min = std::min<double>(min, (double)temp[i]);
max = std::max<double>(max, (double)temp[i]);
}
for (int i=0; i < m_vNumX*m_vNumY; i++)
{
temp[i] -= min;
}
for (int i=0; i < m_vNumX*m_vNumY; i++)
{
temp[i] /= (max-min);
}
DrawWeights->setData(temp);
} }
void MainComponent::run() void MainComponent::run()
+1
View File
@@ -117,6 +117,7 @@ public:
{ {
h.statesUpdateStochastic(); h.statesUpdateStochastic();
} }
// Update weights (positive phase) // Update weights (positive phase)
sumWeights += vt[t].states() * h.states().transpose(); sumWeights += vt[t].states() * h.states().transpose();
sumBiasV += vt[t].states(); sumBiasV += vt[t].states();