zoukankan      html  css  js  c++  java
  • tf 调试记录

    1、使用tf.estimator时出现: ERROR:tensorflow:Model diverged with loss = NaN

    基本可以判断就是版本导致的问题,我是从tf 1.4切换到1.12出现该问题的,网上给出的解决方法有很多,我最终通过以下配置完成解决的:

    Windows SET CUDA_VISIBLE_DEVICES=0
    
    Linux export CUDA_VISIBLE_DEVICES=0
    

    参考链接: https://github.com/tensorflow/models/issues/4881

    其它 NaN Loss的原因及解决方法 参考: https://zhuanlan.zhihu.com/p/114150904

    • 梯度爆炸
    原因:学习的过程中,梯度变得非常大,使得学习的过程偏离了正常的轨迹。
    症状:观察每次迭代的loss值,会发现loss明显增长,最后因为loss值太大以至于不能用浮点去表示,所以变成了Nan。
    可采取的措施:1 降低学习速率,2 如果模型中有多个loss层,就需要找到梯度爆炸的层,然后降低该层的loss weight。
    
    • 学习率过高
    原因:过高的学习率乘上所有的梯度使得所有参数变成无效的值。
    症状:观察输出日志,会发现学习率变成nan
    可采取的措施:设置合适的学习速率
    
    • 损失函数有误
    原因:损失函数的计算,如交叉熵损失函数的计算可能出现log(0),所以就会出现loss为Nan的情况
    症状: loss逐渐下降,突然出现Nan
    可采取的措施: 尝试重现该错误,打印损失层的值进行调试.
    
    • 输入数据有误
    原因: 你的输入中存在Nan
    症状: loss逐渐下降,突然出现Nan
    可采取的措施: 逐步去定位错误数据,然后删掉这部分数据. 可以使用一个简单的网络去读取输入,如果有一个数据是错误的,这个网络的loss值也会出现Nan
    
    • Pooling层的步长大于核的尺寸
    • 设置远距离的Label会得到NAN
  • 相关阅读:
    MongoDB 与 MySQL 性能比较
    PySpider简易教程
    使用redis有什么缺点
    禅道
    Shell02
    Shell01
    性能测试06
    性能测试05
    性能测试04
    性能测试03
  • 原文地址:https://www.cnblogs.com/ying-chease/p/13578596.html
Copyright © 2011-2022 走看看