张量流使用tf.nn.conv2d实现了一个基本的卷积操作。
我对“strides”参数特别感兴趣,它可以让你设置卷积过滤器的步幅——每次移动过滤器在图像上的距离。
早期教程之一中给出的示例,每个方向的图像步幅为 1,是
def conv2d(x, W):
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
strides 数组在链接文档中有更多解释:
详细地说,使用默认的 NHWC 格式...
必须有 strides[0] = strides[3] = 1。对于相同水平和顶点 strides 的最常见情况,strides = [1, stride, stride, 1]。
请注意,“步幅”的顺序与输入的顺序相匹配:[batch, height, width, channels]
采用 NHWC 格式。
显然步幅不是 1batch
并且channels
没有意义,对吧?(您的过滤器应始终遍历每个批次和每个通道)
但是,为什么甚至可以选择将 1 以外的东西放入strides[0]
andstrides[3]
中呢?(它是一个“选项”是关于你可以在你传入的python数组中放置1以外的东西,忽略上面的文档引用)
batch
是否存在我对orchannels
维度的非一个跨步的情况,例如
tf.nn.conv2d(x, W, strides=[2, 1, 1, 2], padding='SAME')
如果是这样,那么这个例子在卷积运算方面意味着什么?