问题描述:

MindYOLO使用自定义coco2017数据集训练错误 配置

ubuntu系统、CUDA11.6、MindSpore 2.2.14、MindYOLO 0.3.0。

训练指令

python train.py --config /home/xiaoyao/mindyolo-master/mydata.yaml --epochs=20 --iou_thres=0.6 --conf_thres=0.25

错误日志

Traceback (most recent call last):
  File "/home/xiaoyao/mindyolo-master/train.py", line 331, in <module>
    train(args)
  File "/home/xiaoyao/mindyolo-master/train.py", line 286, in train
    trainer.train(
  File "/home/xiaoyao/mindyolo-master/mindyolo/utils/trainer_factory.py", line 153, in train
    for i, data in enumerate(loader):
  File "/home/xiaoyao/anaconda3/envs/mind/lib/python3.9/site-packages/mindspore/dataset/engine/iterators.py", line 152, in __next__
    data = self._get_next()
  File "/home/xiaoyao/anaconda3/envs/mind/lib/python3.9/site-packages/mindspore/dataset/engine/iterators.py", line 277, in _get_next
    raise err
  File "/home/xiaoyao/anaconda3/envs/mind/lib/python3.9/site-packages/mindspore/dataset/engine/iterators.py", line 260, in _get_next
    return {k: self._transform_md_to_output(t) for k, t in self._iterator.GetNextAsMap().items()}
RuntimeError: Exception thrown from user defined Python function in dataset. 

------------------------------------------------------------------
- Python Call Stack: 
------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/xiaoyao/anaconda3/envs/mind/lib/python3.9/site-packages/mindspore/dataset/engine/datasets_user_defined.py", line 101, in _cpp_sampler_fn
    val = dataset[i]
  File "/home/xiaoyao/mindyolo-master/mindyolo/data/dataset.py", line 313, in __getitem__
    sample = getattr(self, func_name)(sample, **_trans)
  File "/home/xiaoyao/mindyolo-master/mindyolo/data/dataset.py", line 1076, in label_pad
    cls_pad[:min(nL, padding_size)] = cls[:min(nL, padding_size)]
ValueError: could not broadcast input array from shape (14,) into shape (14,1)

------------------------------------------------------------------
- Dataset Pipeline Error Message: 
------------------------------------------------------------------
[ERROR] Execute user Python code failed, check 'Python Call Stack' above.

------------------------------------------------------------------
- C++ Call Stack: (For framework developers) 
------------------------------------------------------------------
mindspore/ccsrc/minddata/dataset/engine/datasetops/source/generator_op.cc(259).

解决方法:

这个是shape广播的错误,之前也有人碰到过。应该是数据处理中numpy相关操作使用不当造成的, 可能是版本更新的过程中,numpy之类的python库兼容出现了问题,或者报错代码处的numpy库使用不严谨造成的,可以把报错处的那行代码改成如下代码试试:

cls_pad[:min(nL, padding_size)] = np.expand_dims(cls[:min(nL, padding_size)], axis=1)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐