搭建PyTorch图像分类器触发未知错误,寻求错误原因与修改方向指导
报错含义解析
当前触发的urllib.error.HTTPError: HTTP Error 403: rate limit exceeded属于GitHub API访问速率限制错误。torch.hub.load方法运行时会向GitHub的PyTorch官方仓库发起请求拉取模型相关代码与权重,GitHub对未认证的公开请求有访问频率限制,短时间内多次调用、或者多设备共用公网IP的场景下很容易触发该限制,导致模型加载失败。
需要调整的代码范围
- 模型加载逻辑位置调整:当前
torch.hub.load写在ImageClassifier函数内部,相当于每次用户选择图片都会重新加载一次模型,既会重复触发Hub请求加大超限概率,也会大幅降低推理速度,建议把模型加载逻辑移到全局初始化位置,程序启动时只加载一次即可。 - Hub加载方式替换:可以直接用torchvision内置的ResNet接口加载模型,替换
torch.hub.load相关代码,不需要走Hub请求通道,从根源上避免访问GitHub的步骤。 - 变量名错误修复:
ImageClassifier函数中预处理步骤写的是input_tensor = preprocess(image),但函数入参是MLImage,变量名不匹配会触发未定义报错,需要改成对应入参名。 - 无效调用删除:
userfilewindow.pack()和ImageClassifier.Pack()两行都是无效调用,Toplevel窗口没有pack方法,函数本身也不存在Pack属性,这两行运行会触发后续报错,直接删除即可。 - 本地依赖检查:需要确保项目目录下存在
imagenet_classes.txt标签文件,否则读取标签的步骤会触发文件不存在报错。
内容的提问来源于stack exchange,提问作者Christian Griffin
相关产品推荐
相关产品推荐

