基于Keras的LeNet-5的超参数调节实验
2018-02-02 19:18
1091 查看
一.使用技术说明
1.Keras是一个神经网络API,用python编写,以Tensorflow、CNTK、Theano开源深度学习库为后端。可以在短时间内上手入门,具备模块化、以扩展等特点。支持卷积网络,能在CPU和GPU上无缝运行。
2.tensorflow是谷歌公司开发的开源深度学习库,与theano、CNTK等深度学习框架相比,star和follow人数最多。使用Keras和tensorflow的组合可以快速搭建神经网络、卷积神经网络等深度学习模型,支持GPU训练,易于上手,接口简洁。
二.实验设计
本实验使用LeNet-5模型结构,三层卷积、二层池化、三层全链接。在LeNet-5模型中,需要调节的参数众多,包括激活函数、梯度下降、训练集的规模、训练轮次、超参数。如果对每个参数都进行调节,会出现爆炸式的实验结果,过程繁杂。
其中梯度下降中的参数(学习率,优化函数)对准确度的收敛速度起较大作用,对准确度的大小影响不大。激活函数对损失函数求导找最小值有影响,对准确度的大小影响也不大。训练集和测试集使用mnist手写识别数据集,60000张训练集、10000张测试集。本实验使用此数据集,不做改动。最后的训练轮次、超参数作为实验的重点。超参数选取卷积核大小和步长,卷积核的个数使用LeNet-5原模型数值。本组其他三名成员分别在C1 、S1、C2层对卷积核和步长进行实验,寻找准确度最高的情况下的超参数值。
最优参数实验的整体思路是首先在原模型的基础上改变训练轮次epoch的大小,寻找epoch的最优值。之后使用此epoch值分别在C1 、S1、C2层上对卷积核和步长两个变量进行寻优。以C1层为例,在其他变量(S1层之后的所有参数)不变的前提下,确定卷积核大小对准确度的影响。用此卷积核大小替换初始模型中的卷积核变量,在此基础上继续调整C1层的stride步长的大小,找到步长的最优值。之后可以得到C1层的最优卷积核和步长值。S1,C2层使用同样方法。最后将三层的最优值进行汇总测试,与原模型进行对比,比较准确率的大小,实验结论。其中测试数值在每个成员的实验报告中体现。
依据此方法,我们最终的得到C1层中卷积核大小为3、步长为1,S1层中卷积核大小为5,步长为2时,准确率从原模型的98.5%提升到98.7%。
注:如有错误,请批评指正!
1.Keras是一个神经网络API,用python编写,以Tensorflow、CNTK、Theano开源深度学习库为后端。可以在短时间内上手入门,具备模块化、以扩展等特点。支持卷积网络,能在CPU和GPU上无缝运行。
2.tensorflow是谷歌公司开发的开源深度学习库,与theano、CNTK等深度学习框架相比,star和follow人数最多。使用Keras和tensorflow的组合可以快速搭建神经网络、卷积神经网络等深度学习模型,支持GPU训练,易于上手,接口简洁。
二.实验设计
本实验使用LeNet-5模型结构,三层卷积、二层池化、三层全链接。在LeNet-5模型中,需要调节的参数众多,包括激活函数、梯度下降、训练集的规模、训练轮次、超参数。如果对每个参数都进行调节,会出现爆炸式的实验结果,过程繁杂。
其中梯度下降中的参数(学习率,优化函数)对准确度的收敛速度起较大作用,对准确度的大小影响不大。激活函数对损失函数求导找最小值有影响,对准确度的大小影响也不大。训练集和测试集使用mnist手写识别数据集,60000张训练集、10000张测试集。本实验使用此数据集,不做改动。最后的训练轮次、超参数作为实验的重点。超参数选取卷积核大小和步长,卷积核的个数使用LeNet-5原模型数值。本组其他三名成员分别在C1 、S1、C2层对卷积核和步长进行实验,寻找准确度最高的情况下的超参数值。
最优参数实验的整体思路是首先在原模型的基础上改变训练轮次epoch的大小,寻找epoch的最优值。之后使用此epoch值分别在C1 、S1、C2层上对卷积核和步长两个变量进行寻优。以C1层为例,在其他变量(S1层之后的所有参数)不变的前提下,确定卷积核大小对准确度的影响。用此卷积核大小替换初始模型中的卷积核变量,在此基础上继续调整C1层的stride步长的大小,找到步长的最优值。之后可以得到C1层的最优卷积核和步长值。S1,C2层使用同样方法。最后将三层的最优值进行汇总测试,与原模型进行对比,比较准确率的大小,实验结论。其中测试数值在每个成员的实验报告中体现。
依据此方法,我们最终的得到C1层中卷积核大小为3、步长为1,S1层中卷积核大小为5,步长为2时,准确率从原模型的98.5%提升到98.7%。
注:如有错误,请批评指正!
相关文章推荐
- 基于Leaflet的GPS参数提取与轨迹重现实验
- 机器学习实验(五):用迁移学习方法基于keras建立卷积神经网络进行人体动作识别(HAR)
- 大二暑期 机器学习 梯度下降,基于theano的MLP和keras的调参数代码
- Ch2r_ood_understanding 本文档为论文限定领域口语对话系统中超出领域话语的对话行为识别的部分实验代码。代码基于Python,需要用到的外部库有: Keras(搭建神经网络) S
- 网络仿真实验:基于NS2的组播路由协议实现及仿真
- iOS自定义相机/参数调节/视频速率调节/视频合并
- TCP长连接的思考和相关问题的实验_百万链接数测试_百万链接内核参数的调整
- 基于Keras的深度学习的相关基础概念的讲解
- DL学习笔记【11】caffe参数调节-loss层
- kaggle competition 实践学习 文本分类 keras实现 模型基于yoon kim 的 Convolutional Neural Networks for Sentence Class
- 微软整合实验(四):迁移FSMO操作主机角色,基于Server 2008 R2
- TCP/IP实验报告(一):基于TCP的客户/服务器通信程序实例
- HttpClient+List<NameValuePair>发送和接收参数——基于struts2或者ssh等框架
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP
- 实验1--基于框架的应用系统开发框架选择原因及其说明
- 在keras中,用网格搜索调整CNN网络超参数
- 实验:基于源地址的策略路由 推荐
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 基于jQuery的GridView-FlexiGrid的使用和改造(1)--如何使用,完全参数说明
- 【TensorFlow系列】【四】基于lenet的fine-tuning