unexpected EOF, expected 455433 more bytes. The file might be corrupted.不完美解決方案
在下載pytorch的預訓練模型權重的時候,如果網路不穩定導致權重下載到一半中斷,這時候如果我們不把損壞的權重檔案洗掉,就會報unexpected EOF, expected xxxxxx more bytes. The file might be corrupted,
常規解決步驟:
- 找到權重檔案,將權重檔案洗掉
- 重新下載
我在網上查到的解決方案基本都圍繞上面兩個步驟,然而我找不到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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234228.html
標籤:其他
上一篇:特征選擇 Relief 方法
下一篇:Linux命令總結
