阅读(7.5k) 书签 (0)

TensorFlow函数教程:tf.nn.depthwise_conv2d_native

2019-01-31 13:46 更新

tf.nn.depthwise_conv2d_native函数

tf.nn.depthwise_conv2d_native(
    input,
    filter,
    strides,
    padding,
    data_format='NHWC',
    dilations=[1, 1, 1, 1],
    name=None
)

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

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

在给定 4-Dinputfilter张量的情况下计算 2-D 深度卷积.

给定的输入张量的形状为[batch, in_height, in_width, in_channels],滤波器/内核张量的形状为[filter_height, filter_width, in_channels, channel_multiplier],包含深度为1的in_channels卷积滤波器,depthwise_conv2d对每个输入通道应用不同的滤波器(从1个通道扩展到每个通道channel_multiplier),然后将结果连接在一起.因此,输出具有in_channels * channel_multiplier个通道.

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

必须有strides[0] = strides[3] = 1.对于相同水平和顶点步幅的最常见情况是:strides = [1, stride, stride, 1].

参数:

  • input:一个Tensor,必须是下列类型之一:half,bfloat16,float32,float64.
  • filter:一个Tensor,必须与input具有相同类型.
  • stridesints列表,长度为4的1-D,input每个维度的滑动窗口的步幅.
  • paddingstring,可以是:"SAME", "VALID".要使用的填充算法的类型.
  • data_format:可选的string,可以是:"NHWC", "NCHW"默认为"NHWC"指定输入和输出数据的数据格式;使用默认格式“NHWC”,数据按以下顺序存储:[batch, height, width, channels]或者,格式可以是“NCHW”,数据存储顺序为:[batch, channels, height, width].
  • dilationsints的可选列表,默认为[1, 1, 1, 1];长度为4的1-D张量,input每个维度的扩张系数.如果设置为k> 1,则该维度上的每个滤镜元素之间将有k-1个跳过的单元格.维度顺序由值data_format确定.批次和深度尺寸的扩张必须为1.
  • name:操作的名称(可选).

返回:

一个Tensor,与input有相同的类型.