卷积函数tf.nn.conv2d()
tensorflow中使用tf.nn.conv2d()函数实现卷积操作,格式如下:
除去参数name,与方法有关的参数共5个,代表的含义:
- input:需要做卷积的输入图像,要求是一个张量(Tensor),形状是:
[batch, in_height, in_width, in_channels]
具体含义,训练时一个batch的图片数量,图片高度,图片宽度,图像通道数。(这是一个四维张量,要求类型是float32 和64其中之一) - filter:卷积核,要求是一个张量。形状:
[filter_height, filter_width, in_channels, out_channel]
具体含义:[卷积核高度,卷积核宽度,图像通道数,卷积核个数]
要求类型和input相同。
其中,第三维和input第四维一样都是输入道个数,而第四维是输出通道个数
批注:彩色图片就是输入通道3,计算方法是:每一个输入通道的图片都使用同一个卷积核进行卷积操作,生成与输入通道相匹配的特征图(feature map),然后再把这几张特征图相同位置上的字加起来。(后面有详细介绍过程)
输出通道,输出几个特征图,就放几个卷积核,就是几个输出通道。 - strides:卷积是步长,是一个一维向量,长度为4.
默认设置是[1,x,y,1],典型的使用将第一个(批处理)和最后一个(深度)步长设置为1,即batch=1指在样本上的步长为1,depth=1指在通道上的步长为1,strides[0]=1,strides[3]=1,strides[1] = strides[2]="你设置的步长大小 - padding:定义元素边框与元素内容之间的空间。string的类型,只能是SAME和VALID其中之一。决定不同的卷积方式。为SAME时表示填充到卷积核可以到达图像边缘;VALID时表示边缘不填充。(这个参数是重点)
- use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认true。
- 返回值:返回一个张量,也就是特征图。
padding规则介绍
下面的图红色才是正确的。
未完…