自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:
https://www.cnblogs.com/bclshuai/p/11380657.html
1.1 CNN卷积神经网络 1.1.1 什么是CNN卷积神经网络CNN(convolutional neural network)卷积神经网络是一种具有局部连接和权重共享等特性的深层前馈神经网络。简单来说神经网络都是为了提取特征。卷积提取特征的方式如下图所示,加入图片是5*5个像素的图片,用一个3*3的卷积核在图片矩阵上移动,用卷积核中行列中的值乘以图片数据中3*3的数据值,得到一个值,作为图片区域的特征值,然后卷积核向右移动一位,继续计算。移动到最右边,在向下移动一格,从左往右继续计算,最后将5*5的图片数据,转化为3*3的图片特征数据,转化后的图片特征数据仍然保留着原始图片数据的特征。
1.1.2 卷积神经网络解决什么问题
(1) 全连接参数过多的问题
全连接层如果图片是100*100*3(高,宽,RGB三色值),则第一个隐藏层的参数有30000个。参数多会导致训练效率低,也容易出现过拟合。
(2) 局部不变性特征提取
图像缩放,平移,旋转都不影响其特征信息,而全连接层很难提取局部不变性特征。
1.1.3 卷积神经网络原理(1) 卷积层初步提取特征
通过卷积核去乘之后得出值,初步提取特征。卷积层的作用其实就是通过不断的改变卷积核,来确定能初步表征图片特征的有用的卷积核是哪些,再得到与相应的卷积核相乘后的输出矩阵。
(2) 池化层提取主要特征
通过池化层减少训练参数的数量,降低卷积层输出的特征向量的维度。减小过拟合现象,只保留最有用的图片信息,减少噪声的传递。例如卷积层输出是8*8的二维矩阵。把它分成4个2*2的局部矩阵,对局部矩阵进行最大值或者平均值计算,得出一个2*2的矩阵,作为原始图片的特征矩阵。如果池化层的输入单元大小不是二的整数倍,一般采取边缘补零(zero-padding)的方式补成2的倍数,然后再池化。
(3) 全连接层将各部分特征汇总
卷积层和池化层的工作就是提取特征,并减少原始图像带来的参数。全连接层先将二维矩阵转化为1维数组,然后用全连接层进行训练学习,通过前馈误差计算、激活函数、梯度下降法修改参数来提高分类器的准确率。来生成一个等于我们需要的类的数量的分类器。
(4) 产生分类器,进行预测识别
通过训练准确率达到要求之后,就可以用模型去预测分类。
1.1.4 卷积知识点(1)感受野:后一层中某个区域的值是前面某一层固定区域的输入计算出来的,那这个前一层的固定区域就是后一层该位置的感受野。其实就是卷积核移动经过的地方。
(2)步幅(stride):卷积核计算时每次向右移动和向下移动的长度。
(3)深度(depth) : 顾名思义,它控制输出单元的深度,也就是filter的个数,连接同一块区域的神经元个数。
(4)补零(zero-padding) : 我们可以通过在输入单元周围补零来改变输入单元整体大小,从而控制输出单元的空间大小。例如5*5的输入矩阵,通过3*3的卷积之后,输出是3*3,如果希望通过卷积之后,输出仍然是5*5,则需要输入矩阵周围补0,变成7*7的矩阵。
1.1.5 CNN实现手写数字识别代码实例