神经网络的问题
- 如何解决需要输入层过多,导致计算机性能不足,无法实现问题?
- 卷积的平移不变模式:
遍历整个图片,只是提取所需要的局部特征 - 池化中下采样被检测物体的不变模式
神经网络逐层累加的过程中可以直接对图像进行缩放
- 多层的神经网络可以实现更加复杂的模式识别,这是浅层神经网络的不足之处
CNN基本结构
- CNN应用图像模式的一般框架
输入层+卷积层+激活函数+池化层+全连接层
- 输入层
规定输入的通道数,格式化输入的数据 - 卷积层
区分要识别的图像主体边缘,进行特征提取。filter层的通道数和input层的维度必须相同 - 激活函数
激活函数是用来加入非线性因素的,因为线性模型的表达力不够 - 池化层
对输入的特征图进行采样压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征 - 全连接层
连接所有的特征,将输出值送给分类器
CNN网络训练过程
- 损失与误差的反向传播
随机赋初始值,然后通过训练进行参数的反馈调节 - 梯度下降
每一步都沿着损失下降最快的方向,可以达到一个局部最优 - 反向传播算法
求解损失对所有参数的梯度
根据最后的损失倒叙逐层计算每一个参数的梯度
模型的泛化
- 欠拟合
训练集和测试集上的精确度都低 - 过拟合
训练集上精度高,测试集上精度低 - 模型的正则法
早停法: 训练集的精确度下降,但是验证集上的精确度上升,则停止训练
PandlePandle的CNN训练步骤
- 定义模型的整体框架
--定义网络结构
神经网络前向传播过程
--定义优化算法
梯度下降使用方式、参数更新方式、步长设置
-- 定义输出日志
打印训练过程中得到的模型在验证集上的精确度和在训练集上的精确度,获知模型是否过(欠)拟合
-- 定义最终获得的模型参数的保存路径
- 导入数据和预处理
处理数据集的数据,使之适合模型使用 - 训练模型
把所有的代码交给平台运行,我们就可以喝茶加观察了~ - 测试模型
使用新数据看一看模型是不是好用
参考博客