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;我们在等值卷积中在height
和width
维度上对输入值进行采样的扩张率.如果它大于1,则步幅的所有值必须为1.name
:此操作的名称(可选).data_format
:输入的数据格式,可以是“NHWC”(默认)或“NCHW”.
返回:
4-DTensor
, 形状工具data_format
得到.例如,对于“NHWC”格式,形状是[batch, out_height, out_width, in_channels * channel_multiplier].