怎么看神经网络过早收敛_深度学习训练网络中,test loss比training loss早很多收敛,迭代次数要怎么取?...
本着实事求是的态度总没有错。我们的目标就是用网络模型做出更好的预测效果,所以能实现这个目标的方法都是好方法。
以下列举了一些迭代次数判断的方法:
01 当loss值收敛时结束迭代
深度学习的一个关键原理就是比较学习结果和样本标签之间的差距。理论上差距越小,表明学习的效果越好。这个差距就是loss值。
Loss值不可能变为0,只能无限逼近0。所以通过脚趾都能想到,当loss值无法变小的时候,这称为收敛,就是学习结束之时。
02 使用验证集来检验训练成果
深度学习常常会遇到一个问题——过拟合。训练的时候学习效果很好,但是拿到其它地方测试发现效果就不行了。
就是说,并不一定是学习效果最好的时候才停止。那如何来判断停止的时机呢?
有学者提出了验证集。
就是说,把训练集分为2部分,比如70%用来训练,30%用来验证。就像下面的代码。
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed)
然后在训练时加入验证的参数,就像这样:
autoencoder.fit(train_data, train_data,
epochs=50,
batch_size=128,
shuffle=True,
validation_data=(noisy_imgs, data_test)
)
然后就是观察验证曲线,什么时候验证的loss值最小,就选那一次的训练模型进行测试应用。
03 使用测试集来检验训练成果
随着研究的广泛开展和对学习效果的极致追求,我们渐渐发现了一个问题——有时候从验证曲线看到的最优值并不是真实预测过程的最好效果。比如这种情况:对大尺度数据进行深度学习去噪。
最优方法是通过测试效果来决定迭代的次数。
首先,在训练代码中增加回调函数,如MyCallback():
autoencoder.fit(train_data, train_data,
epochs=50,
batch_size=128,
shuffle=True,
validation_data=(noisy_imgs,data_test),
callbacks=[TensorBoard(log_dir='tmp/autoencoder'),MyCallback()])
然后,自己在回调函数中写测试效果的代码,比如以PSNR来检验预测效果。
class MyCallback(Callback):
def on_epoch_end(self, epoch, logs={}):
reconstructed = autoencoder.predict(noisy_imgs)
。。。。。。
然后观察测试的曲线来决定迭代的次数。
如果喜欢请点赞,或关注我交流。
当对这样的小块进行50次训练后,曲线是这样的(上为训练loss,下为验证loss):
那第15次迭代的网络模型用来做真实数据的预测效果是这样的:
接下来,我们要写测试代码。
首先,在训练代码中增加回调函数,如MyCallback():
autoencoder.fit(train_data, train_data,
epochs=50,
batch_size=128,
shuffle=True,
validation_data=(noisy_imgs,data_test),
callbacks=[TensorBoard(log_dir='tmp/autoencoder'),MyCallback()])
然后,自己在回调函数中写测试效果的代码,比如以PSNR来检验预测效果。
class MyCallback(Callback):
def on_epoch_end(self, epoch, logs={}):
reconstructed = autoencoder.predict(noisy_imgs)
。。。。。。
这样在训练50次后,可以看到测试的曲线是这样的(PSNR值越大越好):
这样看来,学习迭代5次就足够了。效果是这样的:
怎么看神经网络过早收敛_深度学习训练网络中,test loss比training loss早很多收敛,迭代次数要怎么取?...相关推荐
- 深度学习深度前馈网络_深度学习前馈网络中的讲义第4部分
深度学习深度前馈网络 FAU深度学习讲义 (FAU Lecture Notes in Deep Learning) These are the lecture notes for FAU's YouT ...
- 深度学习深度前馈网络_深度学习前馈网络中的讲义第1部分
深度学习深度前馈网络 FAU深度学习讲义 (FAU Lecture Notes in Deep Learning) These are the lecture notes for FAU's YouT ...
- Python - 深度学习训练过程使用matplotlib.pyplot实时动态显示loss和acc曲线
1 深度学习训练过程中实时动态显示loss和acc曲线 可参考代码如下: # -*- coding: utf-8 -*-import matplotlib.pyplot as pltif __name ...
- bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)
说明:本文原发于"计量经济圈"公众号,在此仅展示Stata的部分.R部分请移步至本人主页的"R语言与机器学习--经济学视角"专栏,或点击下方链接卡跳转. 盲区行 ...
- 神经网络算法未来_“深度学习三巨头”来了俩,Hinton、LeCun预言深度学习的未来...
当地时间 6 月 23 日,今年的 ACM 图灵奖得主."深度学习三巨头"中的 Geoffrey Hinton.Yann LeCun 在 ACM FCRC 2019上发表演讲,分享 ...
- 华南理工深度学习与神经网络期末考试_深度学习基础:单层神经网络之线性回归...
3.1 线性回归 线性回归输出是一个连续值,因此适用于回归问题.回归问题在实际中很常见,如预测房屋价格.气温.销售额等连续值的问题.与回归问题不同,分类问题中模型的最终输出是一个离散值.我们所说的图像 ...
- 训练深度学习_深度学习训练tricks整理1
深度学习训练tricks整理1 环境:pytorch1.4.0 + Ubuntu16.04 参考: 数据增强策略(一)mp.weixin.qq.com https://zhuanlan.zhihu. ...
- 读取图像矩阵维度必须一致_深度学习在放射治疗中的应用——工具篇(二)矩阵基本操作...
我们在这期继续为大家介绍Matlab中关于图像的一些基本概念与操作.上期我们简单介绍了矩阵的生成方式,这里详细说明矩阵的基本定义.首先矩阵大小可以用"size"函数查看,其中返回结 ...
- 神经网络 异或_深度学习入门笔记(2)线性神经网络
在上一篇笔记中我们一起学习了单层感知器的原理,但针对于异或问题.我们的单层神经网络就束手无策了 *异或运算: 0 0 输出为0,0 1输出为1, 1 0输出为 1, 1 1输出为 0 即,针对以下四个 ...
- 华南理工深度学习与神经网络期末考试_深度学习算法地图
原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...
最新文章
- Grid_Oracle Grid Infrastructure概念介绍(概念)
- 单纯形法只有两个约束条件_10分钟掌握对偶单纯形法
- 向一个有N个元素的顺序表中插入一个元素,平均要移动的次数为多少
- 流式细胞术及常见问题分析
- 腾讯offer-众里寻他千百度
- oracle yyyy和yy,Oracle PL / SQL:SYSDATE与’DD-MMM-YY’的区别?
- c语言二叉树构造与输出,C语言数据结构树状输出二叉树,谁能给详细的解释一下...
- unix文件描述符——socket
- wxWidgets第三课 MSWWindowProc处理窗口消息
- DropBox:机器学习每年可以为我们节省170万的文档预览费用
- ios的延迟执行方法
- 文献笔记(5)(2017ISSCC 14.1)
- 二氧化硅微球包埋羧甲基壳聚糖稀土镧离子/二氧化钛和十六烷基胺/草莓形PVAc/SiO2纳米复合微球性能
- R语言基础 期中考试
- 【2022-03-23】JS逆向之爱奇艺滑块
- uniapp微信小程序使用自定义字体和外部字体
- PTA-C理论B类题库6-3使用函数求最大公约数(辗转相除法的实现)
- Python金融领域人工智能教程
- java毕业设计二手交易系统Mybatis+系统+数据库+调试部署
- mmap在嵌入式中的应用