CNN的相关函数

卷积函数

tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None,name=None)

除去用以指定该操作名字的name参数,与方法有关的共有5个参数。如下:

input: 指需要做卷积的输入图像, 它要求是一个Tensor, 具有[batch, in_height, in_width,in_channels]这样的形状(shape) , 具体含义是“训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数” , 注意这是一个四维的
Tensor, 要求类型为float32和float64其中之一。

filter: 相当于CNN中的卷积核, 它要求是一个Tensor, 具有[filter_height, filter_width,in_channels, out_channels]这样的shape, 具体含义是“卷积核的高度, 滤波器的宽度, 图像通道数, 滤波器个数” , 要求类型与参数input相同。有一个地方需要注意, 第三维in_channels, 就是参数input的第四维。

strides: 卷积时在图像每一维的步长, 这是一个一维的向量, 长度为4。

padding: 定义元素边框与元素内容之间的空间。 string类型的量, 只能是SAME和VALID其中之一, 这个值决定了不同的卷积方式, padding的值为’VALID’时, 表示边缘不填充, 当其为’SAME’时, 表示填充到滤波器可以到达图像边缘。

use_cudnn_on_gpu: bool类型, 是否使用cudnn加速, 默认为true。

池化函数

tf.nn.max_pool(input,ksize,strides,padding,name=None)

tf.nn.avg_pool(input,ksize,strides,padding,name=None)

上面这两个函数中的四个参数和卷积参数类似,如下:

input:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch,height,width,channels]这样的shape。

ksize:池化窗口的大小,取一个四维向量,一般是[1,height,width,1],我们不想在batch和channels上做池化,所以这两个维度设为1

strides:步长,一般也是[1,strides,strides,1]

padding:和卷积一样,VALID是不进行padding操作,SAME是padding操作

----本文结束,感谢您的阅读。如有错,请指正。----
大哥大嫂过年好!支持我一下呗
0%