本文以tf1.13版本为例,介绍tensorflow二维卷积conv2d,该函数的输入参数如下:
tf.nn.conv2d(
input, #shape为(*,*,*,*),4-D的tensor,每个维度的意义与data_fromat对应
filter=None, #shape为(*,*,*,*),同input的shape,前两位为滤波器的高和宽,后两位为输入输出通道数
strides=None, #shape为(4,), 1-D的tensor,长度为4,对应input中每一维的步长
padding=None, #"SAME", "VALID"两种模式
use_cudnn_on_gpu=True,
data_format='NHWC', #另一种模式为"NCHW"
dilations=[1, 1, 1, 1], #1-D的向量,长度为4,对应filter相邻两元素在input中对应维度跳跃的像素数,如果值k > 1, 相邻滤波器之间跳跃k-1个像素。
filter element on that dimension
name=None, #运算的名称
)
该函数的处理逻辑如下:
In detail, with the default NHWC format,
output[b, i, j, k] =
sum_{di, dj, q} input[b, strides[1] * i + di, strides[2] * j + dj, q] *
filter[di, dj, q, k]
关于padding的两种模式的处理过程,可参考该博客。
参考文献: