def inference_network(x, xwidth=28, xheight=28, zdim=2):
"""Inference network to parameterize variational model. It takes
data as input and outputs the variational parameters.
mu, sigma = neural_network(x)
"""
with slim.arg_scope([slim.conv2d, slim.fully_connected],
activation_fn=tf.nn.elu,
normalizer_fn=slim.batch_norm,
normalizer_params={'scale': True}):
net = tf.reshape(x, [N_MINIBATCH, 28, 28, 1])
net = slim.conv2d(net, 32, 5, stride=2)
net = slim.conv2d(net, 64, 5, stride=2)
net = slim.conv2d(net, 128, 5, padding='VALID')
net = slim.dropout(net, 0.9)
net = slim.flatten(net)
params = slim.fully_connected(net, zdim * 2, activation_fn=None)
mu = params[:, :zdim]
#sigma = tf.nn.softplus(params[:, zdim:])
sigma = params[:, zdim:]
return mu, sigma
##########################################
# make variational lower bound objective #
##########################################
评论列表
文章目录