上一期解说了因为输出参数不符合要求、算子性能不反对等算子编译谬误问题该如何定位解决,那么在算子执行的时候也会遇到很多报错,比方输出数据异样、算子实现谬误、性能限度、资源限度等问题,遇到这类情景咱们失常能够采纳类比的分析方法,本期以 mindspore.ops.ResizeBicubic 算子外部数据没有进行定义进而导致输入异样为例来解说下如何定位问题并解决报错。具体内容请查看海报~
文字内容:小孢子:你好呀,昇思 MindSpore,咱们又见面了!这次通过调用 mindspore.ops.ResizeBicubic 算子接口调整图像大小时遇到了报错,能帮我剖析看看如何 debug 不?MindSpore:当然没问题!依旧先看看你的环境信息、脚本代码与报错~ 小孢子:零碎环境信息:Hardware Environment(Ascend/GPU/CPU): CPU
Software Environment:
— MindSpore version (source or binary): 2.0.0-alpha
— 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 复制训练脚本(应用插值调整图像大小):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()) 复制报错信息: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’是没有被定义的,而④中‘output’的报错是因为后面的‘images’没有定义,这样‘output = resize_bicubic_op(images, size)’这段代码就无奈执行,从而导致最初的‘print(output.asnumpy())’无奈输入后果;换句话说,因为定义的缺失导致 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:好呀,下次咱们交换这个问题!小孢子:好的!期待下次见面!报错地图: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… 昇思 MindSpore 报错调试宝典(四):网络构建与训练类报错之算子编译谬误:https://www.hiascend.com/forum/thread-0203114399255966005-1-1…