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

1

5

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.

Whitewing answered 19/12, 2013 at 19:31 Comment(1)
in terms of scipy's methods, that equation is simply v = stats.norm.rvs( loc=b + sigma * W.dot(h), scale=sigma ), not sure what is ambiguous here?Lianna
I
8

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.

Innerdirected answered 19/12, 2013 at 23:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.