px_logit = Dense(h2, 784, 'logit', reuse=reuse) return zm, zv, px_logit tf.reset_default_graph() x = Placeholder((None, 784), 'x') # binarize data and create a y "placeholder" with tf.name_scope('x_binarized'): xb = tf.cast(tf.greater(x, tf.random_uniform(tf.shape(x), 0, 1)), tf.float32) with tf.name_scope('y_'): y_ = tf.fill(tf.pack([tf.shape(x)[0], k]), 0.0) # propose distribution over y qy_logit, qy = qy_graph(xb, k) # for each proposed y, infer z and reconstruct x z, zm, zv, zm_prior, zv_prior, px_logit = [[None] * k for i in xrange(6)] for i in xrange(k): with tf.name_scope('graphs/hot_at{:d}'.format(i)): y = tf.add(y_, Constant(np.eye(k)[i], name='hot_at_{:d}'.format(i))) z[i], zm[i], zv[i] = qz_graph(xb, y) zm_prior[i], zv_prior[i], px_logit[i] = px_graph(z[i], y) # Aggressive name scoping for pretty graph visualization :P with tf.name_scope('loss'): with tf.name_scope('neg_entropy'): nent = -cross_entropy_with_logits(qy_logit, qy) losses = [None] * k for i in xrange(k):
px_logit = Dense(h2, 784, 'logit', reuse=reuse) return px_logit tf.reset_default_graph() x = Placeholder((None, 784), name='x') # binarize data and create a y "placeholder" with tf.name_scope('x_binarized'): xb = tf.cast(tf.greater(x, tf.random_uniform(tf.shape(x), 0, 1)), tf.float32) with tf.name_scope('y_'): y_ = tf.fill(tf.stack([tf.shape(x)[0], 10]), 0.0) # propose distribution over y qy_logit, qy = qy_graph(xb) # for each proposed y, infer z and reconstruct x z, zm, zv, px_logit = [[None] * 10 for i in xrange(4)] for i in xrange(10): with tf.name_scope('graphs/hot_at{:d}'.format(i)): y = tf.add(y_, Constant(np.eye(10)[i], name='hot_at_{:d}'.format(i))) z[i], zm[i], zv[i] = qz_graph(xb, y) px_logit[i] = px_graph(z[i], y) # Aggressive name scoping for pretty graph visualization :P with tf.name_scope('loss'): with tf.name_scope('neg_entropy'): nent = -cross_entropy_with_logits(qy_logit, qy) losses = [None] * 10 for i in xrange(10):