TensorFlow函数教程:tf.nn.separable_conv2d
2019-02-01 17:18 更新
tf.nn.separable_conv2d函数
tf.nn.separable_conv2d(
input,
depthwise_filter,
pointwise_filter,
strides,
padding,
rate=None,
name=None,
data_format=None
)
定义在:tensorflow/python/ops/nn_impl.py。
带可分离滤波器的2-D卷积。
执行深度卷积,该卷积分别对通道起作用,然后是混合通道的逐点卷积。请注意,这是维度[1,2]和3之间的可分离性,而不是维度1和2之间的空间可分性。
详细地:
output[b, i, j, k] = sum_{di, dj, q, r}
input[b, strides[1] * i + di, strides[2] * j + dj, q] *
depthwise_filter[di, dj, q, r] *
pointwise_filter[0, 0, q * channel_multiplier + r, k]
strides仅控制深度卷积的步幅,因为逐点卷积具有[1,1,1,1]的隐含步幅。必须有strides[0] = strides[3] = 1
。对于相同水平和垂直步幅的最常见情况,strides = [1, stride, stride, 1]
。 如果rate中的任何值大于1,我们执行有害的深度卷积,在这种情况下,strides张量中的所有值必须等于1。
参数:
- input:4-D Tensor,shape根据data_format决定。
- depthwise_filter:4-D Tensor,shape为[filter_height, filter_width, in_channels, channel_multiplier]。包含深度为1的in_channels卷积滤波器。
- pointwise_filter:4-D Tensor,shape为[1, 1, channel_multiplier * in_channels, out_channels]。点状滤波器在depthwise_filter空间卷积后混合通道。
- strides:大小为4的1-D,input的每个维度的深度卷积的步幅。
- padding:字符串,可以是'VALID'或者'SAME'。填充算法。请参阅tf.nn.convolution的“返回”部分获得详细信息。
- rate:大小为2的1-D。我们在atrous卷积中通过height和width维度对输入值进行采样的扩张率。如果它大于1,那么所有strides值必须为1。
- name:此操作的名称(可选)。
- data_format:输入的数据格式。可以是“NHWC”(默认)或“NCHW”。
返回:
一个4-D的Tensor,其shape根据'data_format'决定。例如,对于data_format="NHWC",shape为[batch,out_height,out_width,out_channels]。