Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

(Python) Gaussian Bernoulli RBM on computing P(v|h)

Context:

I am implementing Gaussian Bernoulli RBM, it is like the popular RBM but with real-valued visible units.

True that the procedure of sampling hidden values p(h=1|v) are the same for both, i.e.

enter image description here

Problem:

My problem is in coding (using Python) p(v|h), which is,

enter image description here

I am a little bit confused as to how N() works. Do I simply add Gaussian noise using the data's standard deviation to b + sigma * W.dot(h)?

Thank you in advance.

like image 739
IssamLaradji Avatar asked Dec 19 '13 19:12

IssamLaradji


1 Answers

The notation X ~ N(μ, σ²) means that X is normally distributed with mean μ and variance σ², so in the RBM training routine, v should be sampled from such a distribution. In NumPy terms, that's

v = sigma * np.random.randn(v_size) + b + sigma * W.dot(h)

Or use scipy.stats.norm for better readable code.

like image 87
Fred Foo Avatar answered Oct 14 '22 01:10

Fred Foo