Dear scikit-learners,
Thank you first of all for writing such a wonderful machine learning
package for python. I've used scikit-learn quite a lot in the past and
it seemed to always would right away.
Yet, now I'm trying to get started with the BernoulliRBM in
scikit-learn, and I seem to be missing something. My first attempt was
to check if I could recover known components from data that I generated.
For some reason, this does not seem to work at all.
Here is what I did::
import numpy as np
import sklearn.neural_network as NN
# Ground truth parameter values
a = np.array([-.2,.2,0])
b = np.array([.1,-.1])
w = np.array([[1.,.1,.3],
[-.1,-.7,.3]])
# Generate data with known values
V = np.random.rand(1000,3)<.3 # As an initial state
rbm_gt = NN.BernoulliRBM(n_components=2,n_iter=1)
rbm_gt.components_ = w
rbm_gt.intercept_visible_ = a
rbm_gt.intercept_hidden_ = b
for i in xrange(200):
V = rbm_gt.gibbs(V)
# Fit an rbm
rbm =
NN.BernoulliRBM(n_components=2,n_iter=100,learning_rate=0.01,verbose=1)
rbm.fit(V)
# Compare the values
print "True intercept visible",rbm_gt.intercept_visible_
print "Fit intercept visible",rbm.intercept_visible_
print "="*20
print "True intercept hidden",rbm_gt.intercept_hidden_
print "Fit intercept hidden",rbm.intercept_hidden_
print "="*20
print "True components",rbm_gt.components_
print "Fit components",rbm.components_
Yet, when running this code (with np.random.seed(0)), the resulting
parameter estimates are totally off::
True intercept visible [-0.2 0.2 0. ]
Fit intercept visible [ 0.241 0.012 0.227]
====================
True intercept hidden [ 0.1 -0.1]
Fit intercept hidden [-0.00291364 -0.00424846]
====================
True components [[ 1. 0.1 0.3]
[-0.1 -0.7 0.3]]
Fit components [[ 0.1667071 0.08699367 0.15336245]
[ 0.12761852 0.04939561 0.13522931]]
This is not just some roundoff error, the estimated components seem to
me to be absolutely unrelated to my ground truth values. Am I
misunderstanding something here? But what? I feel that my code is not
particularly far from the example code here:
http://scikit-learn.org/stable/auto_examples/plot_rbm_logistic_classification.html
Or should I just not expect to get my generating parameters out?
Any help would be greatly appreciated.
Best,
Ingo
------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls.
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Scikit-learn-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general