mindspore训练retinanet时报错无法计算loss,停止训练

问题描述:

在使用官方脚本训练retinanet时训练几轮后,报错无法计算loss,停止训练

我的数据集为coco格式,修改了配置文件种类等,制作mindrecord格式的文件后进行训练报错,请问可能是什么原因呢,数据集按照流程修改的

Start train retinanet, the first epoch will be slower because of the graph compilation.

epoch: 1 step: 18, loss is 5384.2744140625

lr:[0.000002]

epoch time: 63417.263 ms, per step time: 3523.181 ms

epoch: 2 step: 18, loss is 5357.0615234375

lr:[0.000003]

epoch time: 14948.870 ms, per step time: 830.493 ms

[CRITICAL] ME(20589:140329160312640,MainProcess):2022-05-31-16:48:08.808.295 [mindspore/dataset/engine/datasets.py:2778] Uncaught exception:

Traceback (most recent call last):

  File "train.py", line 212, in

    main()

  File "/home/ai/anaconda3/zxl/retinanet/src/model_utils/moxing_adapter.py", line 113, in wrapped_func

    run_func(*args, **kwargs)

  File "train.py", line 208, in main

    model.train(config.epoch_size, dataset, callbacks=cb, dataset_sink_mode=True)

  File "/home/ai/anaconda3/envs/zxl/lib/python3.7/site-packages/mindspore/train/model.py", line 906, in train

    sink_size=sink_size)

  File "/home/ai/anaconda3/envs/zxl/lib/python3.7/site-packages/mindspore/train/model.py", line 87, in wrapper

    func(self, *args, **kwargs)

  File "/home/ai/anaconda3/envs/zxl/lib/python3.7/site-packages/mindspore/train/model.py", line 548, in _train

    self._train_dataset_sink_process(epoch, train_dataset, list_callback, cb_params, sink_size)

  File "/home/ai/anaconda3/envs/zxl/lib/python3.7/site-packages/mindspore/train/model.py", line 633, in _train_dataset_sink_process

    list_callback.step_end(run_context)

  File "/home/ai/anaconda3/envs/zxl/lib/python3.7/site-packages/mindspore/train/callback/_callback.py", line 226, in step_end

    cb.step_end(run_context)

  File "/home/ai/anaconda3/envs/zxl/lib/python3.7/site-packages/mindspore/train/callback/_loss_monitor.py", line 80, in step_end

    cb_params.cur_epoch_num, cur_step_in_epoch))

ValueError: epoch: 3 step: 18. Invalid loss, terminating training.

解答:您好,根据您的报错信息,问题原因为训练过程中loss跑飞了,框架lossmonitor检测到异常,训练下去无意义,所以自动停止了,需要您自己逐步排查一下您的训练脚本,一般可能是学习率设置的不合适,或者节点激活过度等等。

loss跑飞不收敛不是调低loss就有用的,loss作为一个评价指标不知道你咋调的,调低学习率只是一个建议,这个是最常见的训练问题,可以采用二分法定位,推荐采用以下思路进行排查:

1.检查数据和标签,数据分类是否准确,数据是否干净,数据是否正常,data label是否一致,一般来说不收敛都是由于样本信息量太大导致网络不足以fit整个样本空间。

2.学习率设定不合理(此条已被你排除)

3.网络设定不合理,例如很复杂的分类任务但是使用的网络过浅,可以尝试换网络或者加深网络。

4.检查数据集lable是否有错。

5.检查是否归一化。

上述方法仅提供一个排查思路,并不代表问题就来自这里,具体需要你自己分析修改调试自己的训练脚本和网络。

你可能感兴趣的:(人工智能,python,深度学习)