keras中epoch,batch,loss,val_loss用法说明


Posted in Python onJuly 02, 2020

1、epoch

Keras官方文档中给出的解释是:“简单说,epochs指的就是训练过程接中数据将被“轮”多少次”

(1)释义:

训练过程中当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个epoch,网络会在每个epoch结束时报告关于模型学习进度的调试信息。

(2)为什么要训练多个epoch,即数据要被“轮”多次

在神经网络中传递完整的数据集一次是不够的,对于有限的数据集(是在批梯度下降情况下),使用一个迭代过程,更新权重一次或者说使用一个epoch是不够的,需要将完整的数据集在同样的神经网络中传递多次,随着epoch次数增加,神经网络中的权重的更新次数也增加,模型从欠拟合变得过拟合。

2、batch

(1)keras官方文档中给出的解释:

深度学习的优化算法,说白了就是梯度下降。每次的参数更新有两种方式:

第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大,计算速度慢,不支持在线学习,这种称为Batch gradient descent,批梯度下降

另一种,每看一个数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent.这个方法速度比较快,但是收敛性能不太好,可能在最优点附近晃来晃去,hit不到最优点,两次参数的更新也有可能互相抵消掉,造成目标函数震荡的比较剧烈。

为了克服两种方法的缺点,现在一般采用的是一种折中手段,mini-batch gradient decent,小批的梯度下降,这种方法把数据分为若干个批,按批来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也不是很大。

(2)batch_size:

Keras中参数更新是按批进行的,就是小批梯度下降算法,把数据分为若干组,称为batch,按批更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,一批数据中包含的样本数量称为batch_size。

3、iteration

将数据分为几个batch而不是一次性通过神经网络时,iteration是batch需要完成一个epoch的次数,也就是number of batches (区别于 batch size) , 在一次epoch中 number of  batches = iteration = 训练样本总数  / batch size

比如,对于一个有2000个训练样本的数据集,将2000个样本分成大小为500的batch,那么完成一个epoch需要4个iteration

4、batch size 和 epoch 的选取

(1)训练网络过程中,一个batch中的样本规模大小,即batch size 和epoch个数一起通过影响更新权重的频率定义了网络学习数据的速度。

对于固定的epoch:

(a)在合理范围内,随着batch size增大,跑完一次epoch所需的迭代数减少,对于相同数据量的处理速度进一步加快,确定的下降方向越准,引起的训练震荡越小。

(b)batch size 过大时,跑完一次epoch所需的迭代数减少,想要达到相同的精度,所花费的时间大大增加了,从而对参数的修正也变得缓慢,batch size增大到一定程度,其确定的下降方向已经基本不再变化

对于固定的batch size:

(a)在合理范围内随着epoch的增加,训练集和测试集的误差呈下降趋势,模型的训练有了效果

(b)随着epoch的继续增加,训练集的误差呈下降而测试集的误差呈上升趋势,模型过拟合训练集对测试集性能不好

(2)实验实验,通过实验+经验选取合适的batch size 和 epoch

训练截图:

keras中epoch,batch,loss,val_loss用法说明

网络的权重参数W在每一个batch size都会进行一次更新,界面显示的loss值是 iteration次batch size训练后loss值的加权求和值。val_loss是跑完一次Epoch后,跑完一次验证集计算的值。

---------训练总结------------

train loss 不断下降,test loss不断下降,说明网络仍在学习;(最好的)

train loss 不断下降,test loss趋于不变,说明网络过拟合;(max pool或者正则化)

train loss 趋于不变,test loss不断下降,说明数据集100%有问题;(检查dataset)

train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;(减少学习率)

train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。(最不好的情况)

以上这篇keras中epoch,batch,loss,val_loss用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
Python深入学习之上下文管理器
Aug 31 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
python爬虫实战之爬取京东商城实例教程
Apr 24 Python
和孩子一起学习python之变量命名规则
May 27 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
python绘制玫瑰的实现代码
Mar 02 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
如何通过一篇文章了解Python中的生成器
Apr 02 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 #Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 #Python
python脚本和网页有何区别
Jul 02 #Python
keras:model.compile损失函数的用法
Jul 01 #Python
win10安装python3.6的常见问题
Jul 01 #Python
Python代码需要缩进吗
Jul 01 #Python
导致python中import错误的原因是什么
Jul 01 #Python
You might like
php cookie的操作实现代码(登录)
2010/12/29 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python中zip和unzip数据的方法
2015/05/27 Python
python黑魔法之编码转换
2016/01/25 Python
pyhton列表转换为数组的实例
2018/04/04 Python
详解python中list的使用
2019/03/15 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
士力架广告词
2014/03/20 职场文书
安踏广告词改编版
2014/03/21 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
先进工作者事迹材料
2014/12/23 职场文书
世界遗产的导游词
2015/02/13 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js