目录
一、模型设计
(1)卷积神经网络认识
1,输入层(必须)。输入层是整个神经网络的输入,在处理图像的卷积神经网络中,它一般代表了一张图片的像素矩阵。比如在上图中最左侧的三维矩阵就是可以代表一张图片。其中三维矩阵的长和宽代表了图像的大小,而三维矩阵的深度代表了图像的色彩通道(channel)。比如黑白图片的深度为1,而在RGB色彩模式下,图像的深度为3。从输入层开始,卷积神经网络通过不同的神经网络结构将上一层的三维矩阵转化为下一层的三维矩阵,直到最后的全连接层。
2,卷积层(视情况而定)。从名字就可以看出,卷积层是一个卷积神经网络中最为重要的部分,和传统全连接层不同,卷积层是一个卷积神经网络中最为重要的部分,和传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块,这个小块常用的大小有3*3或者5*5.卷积层试图将神经网络中的每一小块进行更加深入的分析从而得到抽象程度更高的特征。一般来说,通过卷积层处理过的节点矩阵会变得更深,所以上图可以看到经过卷积层之后的节点矩阵的深度会增加。
3,池化层(Pooling)。池化层神经网络不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。池化操作可以认为是将一张分辨率较高的图片转化为分辨率较低的图片。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络中参数的目的。
4,全连接层(必须),经过多轮卷积层和池化层的处理之后,在卷积神经网络的最后一般会是由1到2个全连接层来给出最后的分类结果。经过几轮卷积层和池化层的处理之后,可以认为图像中的信息以及抽象成了信息含量更高的特征。我们可以将卷积层和池化层看出自动图像特征提取的过程。在特征提取完成之后,让然需要使用全连接层来完成分类任务。
5,Softmax层(必须),Softmax层主要用于分类问题,通过Softmax层,可以得到当前样例属于不同种类的概率分布情况。
(3)卷积神经网络设置
①导入顺序模型
顺序模型,用于一层层神经网络连接构建深度神经网络,相当于一个模型框架,在后面运用sunmmary()方法可以查看模型的构建情况。
#顺序模型
model=Sequential()
#查看搭建模型框架
model.summary()
②输入层设置
# 输入层:第一层
# 添加第一个卷积层/最大池化层(必选)
model.add(Conv2D(filters=32, # 32 个过滤器
kernel_size=(3,3), # 卷积核大小 3 x 3
input_shape=input_shape, # 图像输入维度
activation='relu')) # 'relu' 激活函数
model.add(MaxPooling2D(pool_size=(2, 2))) # 池化核大小 2 x 2
第一层设置32个过滤器,卷积核大小3x3,化池核大小设置为2x2
激活函数的作用
如果我们不使用激活函数,那么正向运算时,val=np.dot(w,x)计算完就结束了,同样反向计算时,计算到 error=y(实际值)-y(计算值)后也结束了,这时,虽然最后也会有效果,但中间层完全没有作用。激活函数在深度学习中扮演着非常重要的角色,它给网络赋予了非线性,从而使得神经网络能够拟合任意复杂的函数。如果没有激活函数,无论多复杂的网络,都等价于单一的线性变换,无法对非线性函数进行拟合。
③隐藏层设置
参数设置和前面都是一样。
隐藏层作用:
隐藏层在神经网络中的作用:中间的黑盒子,可以认为是很其他的不同功能层的一个总称每个图层都可以应用您想要的任何函数到前一层(通常是线性变换,然后是压缩非线性)。 隐藏层的工作是将输入转换为输出层可以使用的东西。 输出层将隐藏层激活转换为您希望输出所在的任何比例。 单个隐藏层的意义 隐藏层的意义就是把输入数据的特征,抽象到另一个维度空间,来展现其更抽象化的特征,这些特征能更好的进行线性划分。
隐藏层借点如何选择?
输入层结点数和输出层结点数随之而确定,首先遇到的一个十分重要而又困难的问题是如何优化隐层结点数和隐层数。实验表明,如果隐层结点数过少,网络不能具有必要的学习能力和信息处理能力。反之,若过多,不仅会大大增加网络结构的复杂性(这一点对硬件实现的网络尤其重要),网络在学习过程中更易陷入局部极小点,而且会使网络的学习速度变