我什么时候想在TensorFlow卷积的批处理或通道维度中设置一个步幅?

时间:2017-09-24 03:10:39

标签: tensorflow convolution stride

Tensor flow使用tf.nn.conv2d执行基本卷积操作。

我特别感兴趣的是" strides"参数,它允许您设置卷积滤镜的步幅 - 每次移动滤镜时图像的距离。

one of the early tutorials中给出的示例,每个方向的图像步幅为1,

def conv2d(x, W):
  return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')

strides数组在链接文档中有更多解释:

  

详细说明,使用默认的NHWC格式......

     

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

注意" strides"的顺序匹配输入的顺序:NHWC格式的[batch, height, width, channels]

显然,batchchannels的步幅不是1,这是不合理的,对吧? (您的过滤器应始终遍历每个批次和每个渠道)

但为什么在strides[0]strides[3]中添加1以外的内容甚至可以选择呢? (它是一个"选项"是关于你可以在传入的python数组中放入1以外的东西,忽略上面的文档引用)

是否存在batchchannels维度无法跨越的情况,例如

tf.nn.conv2d(x, W, strides=[2, 1, 1, 2], padding='SAME')

如果是这样,那个例子在卷积运算方面甚至意味着什么?

1 个答案:

答案 0 :(得分:-1)

在某些情况下,您可能会分批发送视频。这意味着您的批处理将是一系列帧。并且假设封闭框架应该非常相似,我们可以通过增加批处理跨度来省略其中的一些框架。据我了解。 IDK关于频道跨度的问题