一.卷积神经网络结构:
1.输入层:为输入的特征数,如图像的像素数
2.卷积层:主要结构为卷积核(过滤器、内核)。一般经过卷积层之后节点矩阵会变得更深
过滤器(作用、尺寸、调整结果矩阵的大小
作用:将当前层神经网络上的一个子节点矩阵(三维的)转化为下一层神经网络上的一个单位节点矩阵,其中单位节点矩阵指的长和宽都为1,但深度不限的节点矩阵。
尺寸:长宽人工指定(33,55),处理的矩阵深度和当前神经网络节点矩阵的深度是一致的,处理后得到的单位节点矩阵的深度称为过滤器的深度
如:节点矩阵223 ,单位节点矩阵115,总共需要参数个数:2235+5=65个 其中权重参数为2235=60个,偏置参数为5个。一个滤波器的参数是223=12个,共需要5种滤波器,每种滤波器对应一个偏置项。卷积核参数与滤波器尺寸、深度以及当前节点矩阵的深度有关。
结果矩阵的大小(主要确定长宽、深度已经提前指定):受滤波器尺寸大小的影响、步长的影响、以及是否在周边填充0的影响。
(W-F+2P)/S+1
W:输入的尺寸,F:卷积核的尺寸、S:步幅,P:填充的尺寸
当步长为1时:
当填充0时,out(length) = in(length)/stride(length) (此时默认填充P=F-1,步长为1)
当不填充0时,out(length) =( in(length)-filter(length)+1)/stride(length)
代码实现卷积前向传播过程:
import tensorflow as tf
# shape是四维矩阵,前两个是卷积核尺寸(长宽),第三个是当前层的深度,第四个是过滤器的深度
filter_weights = tf.get_variable('weights',shape=[5,5,3,16],initializer=tf.truncated_normal_initializer(stddev=0.1))
# 偏置项的维度是下一层的深度,即过滤器的深度
biases = tf.get_variable("biases",shape=[16],initializer=tf.constant_initializer(0.1))
# tf.nn.conv2d实现卷积前向传播
# input:当前层的节点矩阵——四维矩阵(batch_size,三维节点矩阵);strides:不同维度上的步长,长度为4的数组,第一维和第四维要是1;
# padding:填充方式,VALID不添加,SAME为全0填充
conv = tf.nn.conv2d(input=input,filter=filter_weights,strides=[1,1,1,1],padding='SAME')
#给每个节点添加一个偏置项tf.nn.bias_add
bias = tf.nn.bias_add(conv,biases)
# 添加激活函数
actived_conv = tf.nn.relu(bias)
3.池化层:最大池化;平均池化;没有参数。不改变三维矩阵的深度,只缩小矩阵的大小,减少参数,使得训练速度加快同时避免过拟合
需设置池化的大小、是否使用全0填充、移动步长
注意:卷积使用的过滤器是横跨整个深度的,而池化使用的过滤器只影响一个深度上的节点。池化层的过滤器不仅要在长和宽两个维度上移动、还要在深度上进行移动
代码实现最大池化前向传播过程:
tf.nn.max_pool(actived_conv,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME')
4.全连接层:卷积与池化相当于特征提取过程,使用全连接神经网络作为分类
5.输出层softmax层主要用于分类问题
二.与全连接神经网路不同点
1.全连接神经网络每一层节点展示为一列;卷积神经网络每一层节点展示为三维矩阵。决定了输入格式的不一致。全连接神经网络输入是向量;而卷积神经网络的输入是矩阵(三维数组)。这里的矩阵是指一个batch的矩阵。
2.前者相邻两层节点之间全部互相链接,后者局部连接以及参数共享。参数大大减少,同时共享参数使得图像上的位置不受位置的影响
三.经典卷积神经网络模型
3.1 卷积神经网络结构设计通用模式
输入层 —— (卷积层+ —— 池化层?)+ —— 全连接层+
“+"表示一层或者多层。大部分卷积神经网络一般最多连续使用三层神经网络
“?”表示没有或者一层,减少参数防止过拟合,可用调整卷积层步长来代替
配置总结:
过滤器边长一般为1,3,5,多的可达到7,11;
过滤器深度逐层递增(*2)
卷积层的步长一般为1,也有为2,为3;
池化层:过滤器边长一般为2或者3,步长一般也为2或者为3
3.2 LeNet-5模型(99.5%准确率)
输入层:原始图像像素 32321
第一层,卷积层。输入32321,过滤器(55,深度为6,不使用0填充,步长为1),输出尺寸(32-5+1=28)28286。卷积层参数共5516+6