共计 2856 个字符,预计需要花费 8 分钟才能阅读完成。
上一期解说了语法错误问题,本期给大家介绍遇到算子编译谬误问题应该如何剖析和解决,当算子参数值、类型、shape 不满足要求时,或者是算子性能受到限制这些都属于算子编译谬误,本期以构建 ReduceSum 单算子网络时输出超过该算子反对维度为例来剖析解说如何定位与调试。具体内容请看海报~
文字版内容:小孢子:你好呀,昇思 MindSpore,咱们又见面了!这次通过调用 mindspore.ops.ResizeBicubic 算子接口调整图像大小时遇到了报错,能帮我剖析看看如何 debug 不?MindSpore:当然没问题!依旧先看看你的环境信息、脚本代码与报错~ 小孢子:零碎环境信息:Hardware Environment(Ascend/GPU/CPU): CPU
Software Environment:
— MindSpore version (source or binary): 2.0.0
— Python version (e.g., Python 3.7.5): 3.7.5
— OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic
— GCC/Compiler version (if compiled from source): 复制训练脚本信息:01 import mindspore
02 from mindspore import Tensor
03 import mindspore.ops as ops
04
05 resize_bicubic_op = ops.ResizeBicubic(align_corners=True,half_pixel_centers=False)
06 images = Tensor(x_np)
07 size = Tensor(size, mindspore.int32)
08 output = resize_bicubic_op(images, size)
09 print(output.asnumpy()) 复制报错信息:Exception raised:
Traceback (most recent call last):
File “< doctest_example.txt[4]>”, line 1, in <module>
images = Tensor(x_np)
NameError: name ‘x_np’ is not defined #①
File “< doctest_example.txt[5]>”, line 1, in <module>
size = Tensor(size, mindspore.int32)
NameError: name ‘size’ is not defined #②
File “< doctest_example.txt[6]>”, line 1, in <module>
output = resize_bicubic_op(images, size)
NameError: name ‘images’ is not defined #③
File “< doctest_example.txt[7]>”, line 1, in <module>
print(output.asnumpy())
NameError: name ‘output’ is not defined #④复制 MindSpore:首先咱们查看报错信息,①中的异样是因为‘images = Tensor(x_np)’这段代码引起的,次要是命名定义类的谬误,‘x_np’没有被赋予定义,同理②和③的谬误异样也是因为‘size’、‘images’是没有被定义的,而④中的报错则是因为‘images’没有被定义,那么‘output = resize_bicubic_op(images, size)’这段代码就无奈执行,那么最终也就无奈打印输出后果;换句话说,因为定义的缺失导致 mindspore.ops.ResizeBicubic 算子短少了一些输出,进而打印不出输入后果并产生报错。小孢子:那我晓得解决办法啦,既然短少定义那就间接都给他们定义残缺就行啦!这个我会!批改后的正确代码如下:01 import mindspore
02 from mindspore import Tensor
03 from mindspore import ops
04
05 x_np = np.array([1, 2, 3, 4]).astype(np.float32).reshape(1, 1, 2, 2)
06 size = (1, 4)
07 images = Tensor(x_np)
08 size = Tensor(size, mindspore.int32)
09 resize_bicubic_op = ops.ResizeBicubic(align_corners=True, half_pixel_centers=False)
10 output = resize_bicubic_op(images, size)
11 print(output.asnumpy()) 复制 MindSpore:你还真是一点就通!所以这个时候执行打印后果肯定是合乎预期的。小孢子:对的!你快看执行后果:[[[[1. 1.3144622 1.6855378 2.]]]] 复制 MindSpore:因而明天这个报错问题首先须要联合报错信息和打印后果,发现错误是因为算子未定义自身引起的,进而能够定位问题并批改出错,同时也揭示了咱们须要关注变量定义、初始化的正确性。小孢子:我记住啦!算子执行过程中也要思考到方方面面能力防止出错!不多说啦,我要回去钻研钻研资源有余导致的报错咯~MindSpore:好呀,下次咱们交换这个问题!小孢子:好的!期待下次见面!参考链接:【1】https://www.mindspore.cn/docs/zh-CN/r2.0.0-alpha/api_python/o…【2】https://www.hiascend.com/forum/thread-0232107351416081120-1-1…【昇思 MindSpore 报错解决地图】常见报错问题和解决方案:https://www.hiascend.com/forum/thread-0229108045633055169-1-1… 往期回顾:昇思 MindSpore 报错调试宝典(一):数据加载与解决类:https://www.hiascend.com/forum/thread-0215111378750918013-1-1… 报错调试宝典(二):网络构建与训练类报错之 context 配置问题:https://www.hiascend.com/forum/thread-0227112497811434016-1-1… 昇思 MindSpore 报错调试宝典(三):网络构建与训练类报错之语法问题:https://www.hiascend.com/forum/thread-0232113194535560002-1-1…