阅读(10.2k) 书签 (0)

TensorFlow函数教程:tf.nn.depthwise_conv2d

2019-01-31 13:46 更新

tf.nn.depthwise_conv2d函数

tf.nn.depthwise_conv2d(
    input,
    filter,
    strides,
    padding,
    rate=None,
    name=None,
    data_format=None
)

定义在:tensorflow/python/ops/nn_impl.py.

请参阅指南:神经网络>卷积运算

深度 2-D 卷积.

给定4D输入张量(数据格式为'NHWC'或'NCHW')和形状为[filter_height, filter_width, in_channels, channel_multiplier]的滤波器张量,它包含深度为1的in_channels卷积滤波器,depthwise_conv2d对每个输入通道应用不同的滤波器(从1通道扩展到每个通道channel_multiplier),然后将结果连接在一起.输出有in_channels * channel_multiplier个通道.

详细地,

output[b, i, j, k * channel_multiplier + q] = sum_{di, dj}
     filter[di, dj, k, q] * input[b, strides[1] * i + rate[0] * di,
                                     strides[2] * j + rate[1] * dj, k]

必须有strides[0] = strides[3] = 1.对于相同水平和垂直步幅的最常见情况,strides = [1, stride, stride, 1].如果rate中的任何值大于1,我们执行等值深度卷积,在这种情况下,strides张量中的所有值必须等于1.

参数:

  • input:4-D,形状根据data_format得出.
  • filter:4-D,形状为[filter_height, filter_width, in_channels, channel_multiplier].
  • strides:1-D,大小为4,input每个尺寸的滑动窗口的步幅.
  • padding:一个字符串,可以是'VALID'或者'SAME',填充算法.
  • rate:1-D,大小为2;我们在等值卷积中在heightwidth维度上对输入值进行采样的扩张率.如果它大于1,则步幅的所有值必须为1.
  • name:此操作的名称(可选).
  • data_format:输入的数据格式,可以是“NHWC”(默认)或“NCHW”.

返回:

4-DTensor, 形状工具data_format得到.例如,对于“NHWC”格式,形状是[batch, out_height, out_width, in_channels * channel_multiplier].