XEdu的常见错误
令人困扰的错误
对于AI的初学者来说,并不像极客那样熟练掌握代码,或者热衷于解决一大堆的报错,每每遇到红色的输出就发慌。
其实我们也深受其害,有时候一个不经意的小错误,都可能造成数十行的报错提示,解决起来要花不少精力。因此,我们贴心的在XEdu底层开发时设计了错误检查的功能,把初学者常犯的错误用我们自己设计的错误提示体系来解释,希望能够让用户得到更精简且易懂的解释。当然,这里仅检查初学者常犯的错误,并不保证全面。
例如上面的错误,给出了提示Error Code: -103. No such file or directory: body.jpg.
,虽然提示是英文的,但是不难看出,其实就是缺少对应的推理图片,可能是图片名称输错了,或者是图片不在对应的路径下,也可能是图片的后缀名不一致等等。当然,如果还是不清楚,可以拿着103
这个编号(下文称为错误码),到下面的错误提示查询目录进行查询,可以看到中文的解释。
有了这样清晰明了的错误提示,再学习AI就不会那么心慌了。
错误提示设计理念
为了能够形成一套有效的错误检查语义体系,我们参考了经典的错误提示设计方案,定义了基本错误反馈。错误描述用英文(考虑到国际化)描述,同时输出错误码。为方便用户查找对应中文含义,可以在此页面Crtl+F调出网页搜索功能,输入错误吗,如“101”,就可以快速跳转到对应的错误释义。代码和目录编号一致,“1.1”的错误代码为“101”。
错误码格式为三段式:错误码+错误现象+原因阐述或解决方案。其中第三段不一定有保证完全匹配。
标准错误输出信息:Error Code: -编号,错误英文提示 示例:Error Code: -101, No such dataset file:XX/XXX/XXX/
错误提示查询目录
1.文件路径错误
1.1 数据集的路径错误
不存在的目录,检查路径是否拼写正确。
英文提示设计:No such dataset directory:XX/XXX/XXX/
- Error Code: -101. No such dataset directory: xxx
1.2 权重文件的路径错误
不存在的权重文件,检查路径是否拼写正确。
英文提示设计:No such checkpoint file:XX/XXX/XXX.pth
- Error Code: -102. No such checkpoint file: xxx
1.3 要推理文件的路径错误
不存在的推理文件,检查路径是否拼写正确。
英文提示设计:No such file:XX/XXX/XXX.jpg
- Error Code: -103. No such file or directory: xxx
2.文件类型错误
2.1 数据集的类型错误
只能是目录,而且目录文件要符合要求。
如果是imagenet:需要检查文件夹名称+txt名称,如果不存在,给出下载地址。指定的图片类别数量必须和数据集一致。val.txt行数也与实际图片数量一致。
如果是coco,类似检查。
英文提示设计:Dateset file type error
case1:传入参数类型不是字符串
- Error Code - 201. Dataset file type error, which should be <class 'str'> instead of <class 'int'>
case 2:数据集路径存在,且为字符串,但其中文件缺失
- Error Code - 201. Dataset file type error. No such file: '../dataset/cls/hand_gray/classes.txt'
case 3:验证集图片数和val.txt中不一致
- Error Code - 201. Dataset file type error. The number of val set images does not match that in val.txt.
case 4: 数据集中图片损坏
图片类型为gif的,也属于损坏。
- Error Code -201. The image file ../../dataset/xx.jpg is damaged.
2.2 权重文件的类型错误
这里要注意区分权重文件的格式,这里要求选择后缀为pth的文件。
英文提示设计:Checkpoint file type error
- Error Code: -202. Checkpoint file type error: xxx
2.3 要推理文件的类型错误
要求是图片类型的文件,如jpg、png、bmp等受支持的文件格式。
英文提示设计:File type error
- Error Code: -203. Inferable file type error: xxx. Ensure your file is in one of the following formats: jpg, png, jpeg, jiff or bmp.
3.参数值错误
参数值就是赋值语句中等于号右边的那个东西,如 a = 3
中的3
。
3.1 device设置错误
设备名称目前只能是是cpu和cuda,并且需要以字符串形式输入。
英文提示设计:No such argument.
- Error Code: -301. No such argument: xxx
- Error Code: -301. Your device doesn't support cuda.
3.2 主干网络名称错误
目前只支持‘LeNet’、‘MobileNet’、‘ResNet18’、‘ResNet50’等网络,可以用cls.sota()来查看。
英文提示设计:No such argument
- Error Code: -302. No such argument: xxx. Currently xxx is available.
3.4 推理图片格式错误
变量类型必须是str(图片路径)或list[str]
(多张图)或numpyarray
(点阵图)。(bug目前可视化仅支持路径)
- Error Code: - 304. No such argument: (1, 'asd') which is <class 'tuple'>
4.网络连接相关错误
敬请期待,后续会开发网络相关功能。
5. 参数名称错误
参数名称就是赋值语句中等于号左边的那个东西,如 a = 3
中的a
。
6. 代码逻辑错误
6.1 未知图像展示
需要先做图像可视化,再展示。
英文提示设计:No rendered image to show.
- Error Code: - 601. No rendered image to show. Please inference() before show().
6.2 未知数据推理
需要先载入数据,然后再推理。
英文提示设计:No context to inference.
- Error Code: - 602. No context to inference. Please load_context() before inference().