tf.nn.depthwise_conv2d(
input,
filter,
strides,
padding,
rate=None,
name=None,
data_format=None
)
參數:
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]
深度 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個通道.
必須有strides[0] = strides[3] = 1.對於相同水平和垂直步幅的最常見情況,strides = [1, stride, stride, 1].
如果rate中的任何值大於1,我們執行等值深度卷積,在這種情況下,strides張量中的所有值必須等於1.
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]