美文网首页python实现deep learning
2017.10.24代码调试记录

2017.10.24代码调试记录

作者: 晨箜 | 来源:发表于2017-10-24 10:00 被阅读174次

accuracy值不变,loss值为non或inf

训练和测试的Accuracy和Loss曲线,准确度曲线无变化,损失曲线没有,因为损失值是Non 或者Inf。学习率从0.1、0.01都是这样的。

后来将学习率减小到0.001,损失值有实值了,但是准确率仍然不变。

如果train loss一直在下降,而test accuracy没什么变化,可能是过拟合的问题。要么降低lr,要么就该停止训练了

参考:

解决Caffe训练过程中loss不变问题

softmax在计算的过程中得到了概率值出现了零,由于softmax是用指数函数计算的,指数函数的值都是大于0的,所以应该是计算过程中出现了float溢出的异常,也就是出现了inf,nan等异常值导致softmax输出为0.

当softmax之前的feature值过大时,由于softmax先求指数,会超出float的数据范围,成为inf。inf与其他任何数值的和都是inf,softmax在做除法时任何正常范围的数值除以inf都会变成0.然后求loss就出现了87.3356的情况。

解决办法

由于softmax输入的feature由两部分计算得到:一部分是输入数据,另一部分是各层的权值等组成

减小初始化权重,以使得softmax的输入feature处于一个比较小的范围

降低学习率,这样可以减小权重的波动范围

如果有BN(batch normalization)层,finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变得很大(注意将batch_norm_param中的use_global_stats设置为false)。

观察数据中是否有异常样本或异常label导致数据读取异常

本文遇到的情况采用降低学习率的方法,learning rate设置为0.01或者原来loss的1/5或者1/10。

Caffe 训练时loss等于87.33的原因及解决方法

测试loss不降反升

加深网络层数,现在用的是5层全连接网络,relu激活函数,softmax分类器,

Adam优化器,损失函数是tf.nn.softmax_cross_entropy_with_logits(logits= , labels= )。

训练阶段的曲线变化正确 测试阶段准确率只有50%,loss损失函数不正确。test loss 不断升高,不论正确率是否提高,这都是过拟合的一种表现,建议加上正则化手段

参考:www.zhihu.com/question/65439175

训练一个含3个隐含层的采用批规范化的2分类神经网络,随着参数的不断更新,测试集loss会上升,而测试集准确率却比开始时要高,请问这正常吗?

正常,很容易碰到。你用的是交叉熵,理论上,甚至可以通过给最后层权值乘以一个常数来改变 loss,同时却又不影响分类边界,也就是分类正确率保持不变。

不过你的 test loss 不断升高,不论正确率是否提高,这都是过拟合的一种表现,建议加上正则化手段。batch normalization 按原论文的说法,是减少 internal covariate shift 从而加速训练的手段,对过拟合有没有效果,至少我是不太信任的(,虽然原论文 3.4 节中有一段豆腐干大的文字表示自己连正则化都能包了,传说的一针见效啊 XD)。

减小网络层数

3层全连接,稍微 有些许变化,但还不够。

此时的网络参数:K(h1)=500, L(h2)=100, output=4

learining rate = 0.001  iter=800

All cost time:  167.1950433254242

Train Accuracy:  1.0 Test Accuracy:  0.65

相关文章

  • 2017.10.24代码调试记录

    accuracy值不变,loss值为non或inf 训练和测试的Accuracy和Loss曲线,准确度曲线无变化,...

  • JavaScript 忍者秘籍笔记——利用测试和调试武装自己

    第二章 利用测试和调试武装自己 调试代码 调试 javascript 有两个重要的方法:日志记录和断点 日志记录 ...

  • jq封装插件

    读代码-梳理步骤(文字记录)-实现代码-学会调试http://hemin.cn/jq/ jq工具http://...

  • vscode使用指南(代码调试)

    代码调试 vscode 原生支持nodejs的调试,其他语言需要安装拓展支持调试 代码调试界面 调试界面 调试配置...

  • 前端调试

    代码调试 chrome调试 代码调试 1.debugger 可以直接在编写代码的时候,加入debugger,打开浏...

  • XCode 基本调试法

    这里记录一下自己学习到的一些XCode调试的方法。这些调试方法可以让我们使用XCode编写代码进行调试时用起来更顺...

  • 26.opengl高级光照-阴影映射

    这一篇有点难度,得多看几遍,多调试代码赋值理解,这一篇学习笔记也会写的比较详细,把思考和调试代码的过程全记录下来 ...

  • [译]用 LLDB 调试 Swift 代码

    [译]用 LLDB 调试 Swift 代码 [译]用 LLDB 调试 Swift 代码

  • 2017.10.25代码调试记录

    3层网络,隐藏层全连接,顶部Softmax 3层全链接网络加入了学习率衰减,效果依然不好。 max_lr = 0....

  • 2017.10.26代码调试记录

    昨天的结果中,最好的效果是3层全连接:Train Accuracy: 1.0,Test Accuracy: 0.7...

网友评论

  • 030_西山我就来:你好,如果测试集的loss在减小,但测试准确率变化不大是什么情况?
    晨箜:loss减小的很明显吗,准确率和loss的关系很玄妙啊

本文标题:2017.10.24代码调试记录

本文链接:https://www.haomeiwen.com/subject/dqctpxtx.html