【已解决---->“重点在后面”】win10+gpu,keras-yolov3,执行train.py训练模型,loss: nan

9 篇文章 0 订阅
6 篇文章 0 订阅

keras-yolov3在win10+cpu下训练模型正常;但同样的代码在win10+gpu环境下,训练模型一直显示loss:nan。

1.错误信息如下:

Epoch 1/50
2021-12-24 18:31:54.894750: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2021-12-24 18:31:57.850212: W tensorflow/stream_executor/cuda/redzone_allocator.cc:312] Internal: Invoking ptxas not supported on Windows
Relying on driver to perform ptx compilation. This message will be only logged once.
2021-12-24 18:31:58.171032: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_100.dll

 1/19 [>.............................] - ETA: 4:01 - loss: nan
 2/19 [==>...........................] - ETA: 1:57 - loss: nan
 3/19 [===>..........................] - ETA: 1:31 - loss: nan
 4/19 [=====>........................] - ETA: 1:24 - loss: nan
 5/19 [======>.......................] - ETA: 1:17 - loss: nan

2.解决办法如下:

 # filter out inf/nan values encountered here:
 raw_true_wh = K.switch(tf.is_inf(raw_true_wh), raw_true_wh, K.zeros_like(raw_true_wh))
 raw_true_wh = K.switch(tf.is_nan(raw_true_wh), raw_true_wh, K.zeros_like(raw_true_wh))

 3.注意:

 yolov3样本集打标注时,候选区域不能太小,最好一张图只有一个标注框(这样不影响后续检测,可以检测出多个目标)

---------------------------------------------------------------------------------------------------------------------

2022年1月5日:

理解补充:

①当图片样本集数量比较大,分类比较大多时,若batch_size太大(本例是64),lr太小(本例是1e-4),则loss开始就是nan,原因可能是不同图片之间的差别不大,lr值过小,尤其是freeze_body=2时,只有三层数据参与计算(252-249),算法根本就无法计算图片之间的差异,导致梯度消失,所以loss:nan。

②训练过程中loss会在nan和数值之间波动,原因是每个epoch的采样不同,如果正好取的三张图片(本例batch_size=3)同属于一个分类,那么计算梯度就会非常小,可能比学习率都要小,这个时候loss就会是nan。

下面是训练过程中的截图,从上往下看。

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值