def __gibbs_sampling(self):
# Gibbs sampling
# Sample visible units
with tf.name_scope('visible') as _:
signal_back = self.__conv2d(self.hid_state0, self.weights_flipped) + self.cias
if self.is_continuous:
# Visible units are continuous
normal_dist = tf.contrib.distributions.Normal(
mu=signal_back, sigma=1.)
self.vis_1 = tf.reshape(
tf.div(normal_dist.sample_n(1), self.weight_size * self.weight_size),
self.input_shape, name='vis_1')
else:
# Visible units are binary
vis1_prob = tf.sigmoid(signal_back, name='vis_1')
self.vis_1 = self.__sample(vis1_prob, 'vis_1')
# Sample hidden units
with tf.name_scope('hidden') as _:
self.hid_prob1 = tf.sigmoid(self.__conv2d(self.vis_1, self.weights) + self.bias, name='hid_prob_1')
评论列表
文章目录