def conv_layer(self, input_tensor, layer_number):
"""Build a convolution layer ended with an activation function.
Args:
input_tensor: The output from the layer before.
layer_number (int): The number of the layer in the network.
Returns:
tensor: The activated output.
"""
inchannels, input_tensor = self._ensure_2d(input_tensor)
layer_spec = self.network_spec['layers'][layer_number]
filter_shape = (layer_spec['filter']['height'],
layer_spec['filter']['width'],
inchannels,
layer_spec['filter']['outchannels'])
filter_strides = (layer_spec['strides']['inchannels'],
layer_spec['strides']['x'],
layer_spec['strides']['y'],
layer_spec['strides']['batch'])
with tf.name_scope('conv' + str(layer_number)):
w = self._weight_variable(filter_shape, name='W')
b = self._bias_variable([layer_spec['filter']['outchannels']], name='b')
conv = tf.nn.conv2d(input_tensor, w, strides=filter_strides, padding='SAME')
activation = getattr(tf.nn, layer_spec['activation_function'])(conv + b, name='activation')
return activation
评论列表
文章目录