如何将PyTorch中的torchscript模型转换为普通的nn.Module?

spi*_*tor 7 python pytorch torchscript

我通过以下方式加载torchscript模型:

model = torch.jit.load("model.pt").to(device)
Run Code Online (Sandbox Code Playgroud)

该模型的子模块被标识为RecursiveScriptModule。我想微调上传的权重,为了使其更简单并将它们转换为torch.float32最好将所有这些东西转换为普通的PyTorch nn.Module

在官方文档https://pytorch.org/docs/stable/jit.html中,告知如何转换nn.Moduletorchscript,但我没有找到任何以相反方向执行此操作的示例。有没有办法做到这一点?

PS这里给出了加载模型预训练模型的示例: https://github.com/openai/CLIP/blob/main/notebooks/Interacting_with_CLIP.ipynb

小智 2

您可以尝试将其加载为例如state_dict = torch.load(src).state_dict()。然后手动转换每个键和值new_v = state_dict[k].cpu().float()