Slim下的函式介紹
阿新 • • 發佈:2018-12-11
1、Slim.conv2d:二維卷積
函式原型:
convolution(inputs, num_outputs, kernel_size, stride=1, padding='SAME', data_format=None, rate=1, activation_fn=nn.relu, normalizer_fn=None, normalizer_params=None, weights_initializer=initializers.xavier_initializer(), weights_regularizer=None, biases_initializer=init_ops.zeros_initializer(), biases_regularizer=None, reuse=None, variables_collections=None, outputs_collections=None, trainable=True, scope=None):
引數介紹:
inputs:指需要做卷積的輸入影象 num_outputs:指定卷積核的個數(就是filter的個數) kernel_size:N個正整數的序列,指定卷積核的空間維度。 可以是單個整數,則所有空間維度具有相同值。 stride:一組N個正整數,指定計算輸出的stride。 可以是一個整數,則所有空間維具有相同的值。指定任何stride!= 1與指定任何rate!= 1不相容。 padding:為padding的方式選擇,VALID或者SAME data_format:是用於指定輸入的input的格式 rate:N個正整數的序列,指定用於萎縮卷積的擴張率。 可以是單個整數,以指定所有空間維度的相同值。 指定任何rate!= 1與指定任何stride!= 1不相容。 activation_fn:
2、conv2d_same():使用“SAME”填充的二維卷積
函式原型:conv2d_same(inputs, num_outputs, kernel_size, stride, rate=1, scope=None) inputs: 一個4維tensor:[batch, height_in, width_in, channels]. num_outputs:卷積核的個數 kernel_size: 卷積核的尺寸 stride: 輸出的stride rate: 空洞卷積膨脹率 scope: Scope.
net = conv2d_same(inputs, num_outputs, 3, stride=stride)
# 等價於
net = slim.conv2d(inputs, num_outputs, 3, stride=1, padding='SAME')
net = subsample(net, factor=stride)
# 但是和net = slim.conv2d(inputs, num_outputs, 3, stride=stride, padding='SAME')不等價,因為當輸入的高度
或寬度是偶數時,它是不同的,這就是我們添加當前函式的原因。
# subsample的原始碼為:
def subsample(inputs, factor, scope=None):
"""Subsamples the input along the spatial dimensions.
Args:
inputs: A `Tensor` of size [batch, height_in, width_in, channels].
factor: The subsampling factor.
scope: Optional variable_scope.
Returns:
output: A `Tensor` of size [batch, height_out, width_out, channels] with the
input, either intact (if factor == 1) or subsampled (if factor > 1).
"""
if factor == 1:
return inputs
else:
return slim.max_pool2d(inputs, [1, 1], stride=factor, scope=scope)
3、