加载 Pytorch 模型检查点时出错:_pickle.UnpicklingError:无效的加载密钥,'\x1f'

问题描述 投票:0回答:1

我正在尝试加载 Pytorch 模型的权重,但出现此错误:

_pickle.UnpicklingError: invalid load key, '\x1f'.

这是权重加载代码:

import os
import torch
import numpy as np
# from data_loader import VideoDataset
import timm

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print('Device being used:', device)

mname = os.path.join('./CDF2_0.pth')
checkpoints = torch.load(mname, map_location=device)
print("Checkpoint loaded successfully.")
model = timm.create_model('legacy_xception', pretrained=True, num_classes=2).to(device)
model.load_state_dict(checkpoints['state_dict'])
model.eval()

我尝试过不同的 Pytorch 版本。我尝试通过将扩展名更改为 .zip 并使用存档管理器打开来检查权重,但无法解决问题。这是我正在尝试加载的权重 .pth 文件的公共链接。非常感谢任何帮助!

python pytorch pickle
1个回答
0
投票

当尝试打开 gzip 文件(就像是 pickle 或 pytorch 文件一样)时,该错误很常见,因为 gzip 以

1f
字节开头。但这不是一个有效的 gzip:它看起来像一个损坏的 pytorch 文件。

确实,看看

hexdump -C file.pt  | head
(如下所示),它的大部分看起来像一个pytorch文件(应该是一个ZIP存档,而不是gzip,包含一个名为data.pkl的python pickle文件)。但前几个字节是错误的:它不是像 ZIP 文件那样开始(字节
50 4B
或 ASCII
PK
),而是像
gzip
文件(
1f 8b 08 08
)一样开始。所以就好像前 21-31 字节被替换为(有效,空?)gzip 文件头。

您的文件:

00000000  1f 8b 08 08 ff 35 29 67  02 ff 43 44 46 32 5f 30  |.....5)g..CDF2_0|
00000010  2e 70 74 68 00 03 00 00  00 00 00 00 00 00 00 44  |.pth...........D|
00000020  46 32 5f 30 2f 64 61 74  61 2e 70 6b 6c 46 42 0f  |F2_0/data.pklFB.|
00000030  00 5a 5a 5a 5a 5a 5a 5a  5a 5a 5a 5a 5a 5a 5a 5a  |.ZZZZZZZZZZZZZZZ|
00000040  80 02 7d 71 00 28 58 08  00 00 00 62 65 73 74 5f  |..}q.(X....best_|
00000050  61 63 63 71 01 63 6e 75  6d 70 79 2e 63 6f 72 65  |accq.cnumpy.core|

torch.save 生成的有效 pickle:

00000000  50 4b 03 04 00 00 08 08  00 00 00 00 00 00 00 00  |PK..............|
00000010  00 00 00 00 00 00 00 00  00 00 0c 00 16 00 74 6d  |..............tm|
00000020  70 2f 64 61 74 61 2e 70  6b 6c 46 42 12 00 5a 5a  |p/data.pklFB..ZZ|
00000030  5a 5a 5a 5a 5a 5a 5a 5a  5a 5a 5a 5a 5a 5a 5a 5a  |ZZZZZZZZZZZZZZZZ|
00000040  80 02 63 74 6f 72 63 68  2e 5f 75 74 69 6c 73 0a  |..ctorch._utils.|
00000050  5f 72 65 62 75 69 6c 64  5f 74 65 6e 73 6f 72 5f  |_rebuild_tensor_|
© www.soinside.com 2019 - 2024. All rights reserved.