def compute(self, inputs):
"""Compute a batch of outputs of the neural network from a batch of inputs.
Args:
inputs: a tensorflow tensor, a batch of input images. Each image is of
size InputReaderCifar10.IMAGE_SIZE x InputReaderCifar10.IMAGE_SIZE x
InputReaderCifar10.NUM_CHANNELS.
Returns:
net: a tensorflow op, output of the network.
embedding: a tensorflow op, output of the embedding layer (the second
last fully connected layer).
"""
hparams = self._hparams
net = None
num_pool_conv_layers = len(hparams.nums_conv_filters)
for i in xrange(num_pool_conv_layers):
net = slim.conv2d(inputs if i == 0 else net,
hparams.nums_conv_filters[i],
[hparams.conv_filter_sizes[i], hparams.conv_filter_sizes[i]],
padding="SAME",
biases_initializer=tf.constant_initializer(0.1 * i),
scope="conv_{0}".format(i))
net = slim.max_pool2d(net,
[hparams.pooling_size, hparams.pooling_size],
hparams.pooling_stride,
scope="pool_{0}".format(i))
net = slim.flatten(net, scope="flatten")
net = slim.fully_connected(net,
384,
biases_initializer=tf.constant_initializer(0.1),
scope="fc_{0}".format(num_pool_conv_layers))
net = slim.dropout(net,
hparams.dropout_prob,
scope="dropout_{0}".format(num_pool_conv_layers))
embedding = slim.fully_connected(net,
192,
biases_initializer=tf.constant_initializer(0.1),
scope="fc_{0}".format(num_pool_conv_layers + 1))
net = slim.fully_connected(embedding,
InputReaderCifar10.NUM_CLASSES,
activation_fn=None,
biases_initializer=tf.constant_initializer(0.0),
scope="fc_{0}".format(num_pool_conv_layers + 2))
return net, embedding
评论列表
文章目录