-
Theano FCN实现与训练经验与教训小结
NaN
- 计算softmax loss时要用numeric robust 的计算方式. softmax与 loss可能要分开计算. 得到前者的计算方式可以是常规方法. 但计算后者时要注意无穷大和NaN的出现.
- NaN的出现一定是因为出现了无穷大. 无穷大的出现则是因为变量存储的数值超出了变量数据类型能表示的最大值.使用GPU计算常用float32, 它的最大表示值在(10^{38.5})附近.
- learning_rate太大可能导致非数的出现: weight值会变得很大(超过10应该就算大了). 在forward的过程中会不断乘以weight值, 这样就会导致神经元的激活值达到无穷大. 然后, 只要碰到值为0的weight(小概率)或与其他的无穷大, 就会出现NaN.
- 像素级别的loss的取均值决定learning_rate的数量级. 我使用(224 imes 224)的图片, 如果loss是对单个像素的均值, 则数量级在(10^{-5}). 如果是对单张图片的loss, 要再小4个数量级.(caffe fcn使用了(10^{-10}))
- 出现问题时要积极寻找到问题来源, 重要的问题说三遍:出现问题时要积极寻找到问题来源, 出现问题时要积极寻找到问题来源. 不能瞎猜, 更不能直接放弃.
loss不下降了
- 先尝试使用更小的learning_rate, 如果不行, 就尝试更大的. 在使用不同大小的learning_rate训练网络的过程中, learning_rate并非一定要递减. 这是亲身体验过的. 原因不明, 可能是因为大的learning_rate让weight set跳入了一个更好的basin.
-
相关阅读:
@ModelAttribute注解详细使用
Spring MVC使用注解实现账户注册与登陆
@PathVariable、@RequestHeader与@CookieValue注解的使用案例
IDEA搭建我的第一个Spring MVC应用(附使用注解实现)
JDBC自定义工具类
JDBC与MySQL实现分页查询技术
JavaWeb实战——记录网站上一次访问时间
微信小程序使用setData修改数组中的指定下标的属性值
Centos6.x 无法 ping 外网 --- 已解决
Ckeditor失去焦点前保留光标位置
-
原文地址:https://www.cnblogs.com/dengdan890730/p/6262661.html
Copyright © 2020-2023
润新知