unexpected EOF, expected 455433 more bytes. The file might be corrupted.解决方案

unexpected EOF, expected 455433 more bytes. The file might be corrupted.不完美解决方案

在下载pytorch的预训练模型权重的时候,如果网络不稳定导致权重下载到一半中断,这时候如果我们不把损坏的权重文件删除,就会报unexpected EOF, expected xxxxxx more bytes. The file might be corrupted。

常规解决步骤:

  1. 找到权重文件,将权重文件删除
  2. 重新下载

我在网上查到的解决方案基本都围绕上面两个步骤,然而我找不到pytorch的权重文件!网上说一般在路径\home\用户名\.cache\torch 中,然而我打开.cache文件夹是这样的

在这里插入图片描述
这里要注意一下,.cache是个隐藏文件夹,在winSCP中按 ctrl+Alt+H 才会显示。

最终解决方案

1. 在torch.hub.load_state_dict_from_url中指定权重保存路径。

一般我们下载pytorch的预训练权重都是用torch文件夹中,hub.py文件里的load_state_dict_from_url(url, model_dir=None, map_location=None, progress=True, check_hash=False)函数,查看函数定义我们发现,model_dir是一个允许我们指定权重保存路径的参数。因此我们在这里自己指定保存位置,下载失败之后就可以方便地删除文件,重新下载

2. 用wget将模型下载到指定位置

在网络非常不稳定,或者模型文件非常大的时候,如果直接用load_state_dict_from_url()下载会失败无数次。我们再看该函数的源代码,发现注释里有这样一句话 If the object is already present in ‘model_dir’, it’s deserialized and returned. 也就是说我们是可以自己从别的途径直接先把权重下载到我们指定的位置,然后重新调用load_state_dict_from_url()的
在这里插入图片描述
这时候就要用到wget大法了!

修改下面的指令到terminal输入

wget -P 模型保存的本地路径 url

如果下载到一般中断了,wget支持断点续传,加个-c就可以啦

wget -P 模型保存的本地路径 -c url

12.25更新

默认的保存路径找到了!
原来因为我是在root模式下操作的,所以下载权重默认的保存路径在/root/.cache/torch/checkpoints里!

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值