conv2d函数形式
tensorflow.nn.conv2d( input, filter, strides, padding, use_cudnn_on_gpu=True, data_format='NHWC', dilations=[1, 1, 1, 1], name=None)
参数:
1) input:用于做卷积运算的数据(一般是图像),它是一个四维的Tensor:[batch, in_height, in_width, in_channels]。
batch: 数据数量,假设一批训练数据有10000个样本,batch就等于10000;
in_height: 单幅图像的高度;
in_width: 单幅图像的宽度;
in_channels: 图像的通道数,如果RGB图像,那么每个像素点都有RGB三个通道的数据,in_channels为3。如果是单色图片则in_channels为1。
2) filter: 卷积核,它也是一个四维的Tensor: [filter_height, filter_width, in_channels, out_channels],具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],其中图像通道数(in_channels)与input的in_channels数值相同。
out_channels:卷积核数量。卷积神经网络提取信息的过程必然存在信息的丢失,为了最大程度的降低损失,增加卷积核将图片或者数据信息从不同的角度进行分块、信息提炼。
3) strides: 一个四维的Tensor:[batch_stride, height_stride, width_stride, channel_stride]。
batch_stride:在batch维度上的移动步长。batch_stride=1表示不跳过任何一个训练样本;batch_stride=2表示每隔一个样本取一个用于训练。一般该值设置为1,表示不错过任何一个样本。
channel_stride:在图像通道维度上的步长。一般也设置为1。
height_stride,width_stride:在图像矩阵上滑动的像素数。当步长为1 时,每次滤波器移动一个像素的位置;当步长为2时,每次滤波器会移动2个像素。
4) padding:卷积的边缘处理方式,值为“VALID”或者“SAME”。
VALID:当卷积核运动到输入图像的边界时,则卷积停止。
SAME:当卷积核运动到输入图像的边界时,继续卷积运算,超出的部分用零值进行填充。这样的优势在于可以对输入图像矩阵的边缘进行滤波,让更好的控制特征图的大小。
5) use_cudnn_on_gpu: 是否使用cudnn加速,默认为True。
6) data_format: 输入数据的格式,取值为"NHWC"或者"NCHW", 默认为"NHWC"。
如果格式为"NHWC