def sample(self, n):
W = self.W.get_value()
V_alpha = self.V_alpha.get_value()
b_alpha = self.b_alpha.get_value()
V_mu = self.V_mu.get_value()
b_mu = self.b_mu.get_value()
V_sigma = self.V_sigma.get_value()
b_sigma = self.b_sigma.get_value()
activation_rescaling = self.activation_rescaling.get_value()
samples = np.zeros((self.n_visible, n))
for s in xrange(n):
a = np.zeros((self.n_hidden,)) # H
for i in xrange(self.n_visible):
if i == 0:
a = W[i, :]
else:
a = a + W[i, :] * samples[i - 1, s]
h = self.parameters["nonlinearity"].get_numpy_f()(a * activation_rescaling[i])
alpha = Utils.nnet.softmax(np.dot(h, V_alpha[i]) + b_alpha[i]) # C
Mu = np.dot(h, V_mu[i]) + b_mu[i] # C
# Sigma = np.minimum(np.exp(np.dot(h, V_sigma[i]) + b_sigma[i]), 1)
Sigma = np.exp(np.dot(h, V_sigma[i]) + b_sigma[i])
comp = Utils.nnet.random_component(alpha)
samples[i, s] = np.random.laplace(Mu[comp], Sigma[comp])
return samples
评论列表
文章目录