tf.nn.conv2d是Tensorflow中非常重要的实现2D卷积的方法,根据官方网站:
tf
参数:
input: 需要输入的图像,类型为4维的Tensor,数据类型常为float32或float64。格式为[batch, in_height, in_width, in_channels],具体含义为[训练一个batch中的图片数量, 图片高度, 图片宽度, 图片通道数]。如果图片为灰度照片,图片通道数为1,如果图片为彩色RGB照片,图片通道数为3。
filters: 卷积核,类型为4维的Tensor。数据类型必须和input保持一致。格式为[filter_height, filter_width, in_channels, out_channels],具体含义为[卷积核的高度,卷积核的宽度,图片通道数,卷积核个数]。注意input的第四维和filter的第三维保持一致。
strides: 步长,类型为int,或长度为1,2,4的list。如果strides是一个int a,那么默认是上下步长和左右步长都为a。根据NHWC规则,N和C默认为1。strides一般格式为[1,上下步长,左右步长,1]。
padding: "SAME"或"VALID"两种。"SAME"表示卷积核可以停留在图像边缘。
data_format:"NHWC"或"NCHW",默认是"NHWC"。如果用"NHWC",数据存储方式为[batch, height, weight, channels],如果用"NCHW",数据存储方式为[batch,channels, height, weight]。
结果返回的是一个Tensor,和input的格式一样。
最后,附上一张conv2d和conv2d_transpose的关系图。