关于算法:MindSpore报错RuntimeError-Exception-thrown-from-PyFunc

28次阅读

共计 1163 个字符,预计需要花费 3 分钟才能阅读完成。

1 报错形容
1.1 零碎环境
ardware Environment(Ascend/GPU/CPU): CPU
Software Environment:
– MindSpore version (source or binary): 1.7.0
– Python version (e.g., Python 3.7.5): 3.7.6
– OS platform and distribution (e.g., Linux Ubuntu 16.04): Windows-10-10.0.19041-SP0
– GCC/Compiler version (if compiled from source):

1.2 根本信息
1.2.1 脚本
此案例为创立一个做超分辨率的数据集,应用 mindspore.dataset.GeneratorDataset 接口实现自定义形式的进行数据集加载。
image.png

1.2.2 报错
报错信息:RuntimeError: Exception thrown from PyFunc. Invalid python function, the‘source’of‘GeneratorDataset’should return same number of NumPy arrays as specified in column_names, the size of column_names is:1 and number of returned NumPy array is:2
image.png

2 起因剖析
依据报错信息提醒,GeneratorDataset 中应用到的数据返回字段应与指定的列名个数统一,但目前指定列名个数为 1,返回列数为 2。依照数据返回列数剖析,应定义两个列名,但源码中:DS=ds.GeneratorDataset(dataset,column_names=[“LR,HR”]),[“LR,HR”]示意为一个字段,故应在此局部进行批改。

3 解决办法
DS=ds.GeneratorDataset(dataset,column_names=[“LR,HR”])
改为与输出数据返回字段相匹配的模式:
DS=ds.GeneratorDataset(dataset,column_names=[“LR”,“HR”])
image.png

此时失常执行,可创立自定义数据集,输入如下:
image.png

4 总结
定位报错问题的步骤:
1、找到报错的用户代码行:for data in DS.create_dict_iterator():;
2、依据日志报错信息中的提醒,定位到自定义数据返回时呈现问题。GeneratorDataset 返回与定义的 columns 字段不统一,导致报错。
3、自定义数据集创立时返回与定义的字段保持一致。

5 参考文档
mindspore 教程 -> 数据处理 -> 自定义数据集
https://www.mindspore.cn/tuto…

正文完
 0