置信大家在应用昇思MindSpore时,会在不同状况下遇到不同类型的报错,为了帮忙各位在遇到报错时能够自行定位-调试-解决,公布昇思MindSpore报错调试宝典系列文章,供大家学习参考!作为第一篇,咱们以数据处理类型报错开始,从Python Call Stack、Dataset Pipeline Error Message、C++ Call Stack等多个维度疾速定位问题并调试,置信大家在理解学习后都可能有所播种,当然如果有任何问题请留言征询!后续会有更多类型报错的调试宝典,敬请期待!详情请看下方长图。

水果榨汁儿,我爱喝水果榨汁儿,我能够随便混搭,再配上水果寿司儿;报错调试,我要解决报错调试,我能够剖析定位,再加上调试解决就完事儿!本期用案例解说数据加载与解决类报错的解决流程,走过路过不要错过!敬请期待下一期!文字内容:某天,小孢子出门游学遇到了MindSpore,这可把好学的小孢子快乐坏了,立马头脑风暴一样抛出了很多困惑!小孢子:MindSpore,你好呀!在应用MindSpore时经常会遇到一些报错,令人头大,作为资深智能框架,能走漏小tips如何疾速找到问题并调试的呢?MindSpore: MindSpore在解决网络报错时给开发者提供了多种调试性能,咱们能够用一个简略的数据加载与解决类的问题来解说一下整个流程。这边首先自定义一个Python数据处理类,将其接入MindSpore的数据处理流水线中并获取解决后的数据。

报错信息:

小孢子:所以报错信息走漏了怎么的信息呢?MindSpore:快拿小笔记本记好!MindSpore2.0版本开始报错信息可是进行了全面的降级哦~

如下dataset的报错信息次要分为三个局部,能够依照问题定位须要查看对应局部:①Python Call Stack,与框架用户脚本相干的报错栈信息②Dataset Pipeline Error Message,数据处理管道错误信息③C++ Call Stack,与框架开发者相干的调试报错信息。

在上图的运行报错信息中,②Dataset Pipeline Error Message示意的信息为:运行python代码时呈现的异样报错,倡议查看Python代码或查看Python相干的调用栈。因而能够从①Python Call Stack抓取到的Python调用栈持续剖析:这里看到的Traceback信息是典型的Python调用栈。从调用栈一级一级调用的信息中能够看到,最初出错是调用了File: "test_api.py"中第43行的语句data = self.data[index] / self.scale,导致最初呈现了异样ZeroDivisionError,显然这是一个除零异样。小孢子:明确啦!当初咱们曾经实现了定位问题这一部分,接下来就是要调试啦~MindSpore:没错!调试环节能够在报错语句前后加一些打印值,确认除数self.scale在什么状况下会变成0,同时也能够遍历数据确认一下是生成第几条数据产生的谬误。

在getitem中增加了一些打印,再次运行代码,能够看到self.scale初始值为2,每次调用一次getitem都会对self.scale – 1,所以调用2次之后,self.scale就会变为0,因而在第2次执行self.data[index] / self.scale时呈现了除零报错。

为了简略解决此状况,咱们就能够在self.scale等于0的时候,额定定义该数值从而避免出现除零谬误,导致数据处理异样。

最终,数据处理流程就调通啦~运行后果:

小孢子:哇!也就是说,在遇到数据加载与解决的报错时,都能够依照上述操作来,首先对于报错信息进行全面剖析,而后定位问题代码,最初进行代码的调试和解决~MindSpore:Bingo,你可真是个小聪明!小孢子:明天真的受益匪浅啊!!我要好好回去钻研一翻,有问题再来跟你征询哦~MindSpore:哈哈,好的,随时探讨!