当我尝试腌制时
import torch
import torch.nn as nn
# A simple base model to create a ScriptModel
class ExampleModel(nn.Module):
def __init__(self, factor: int):
super(ExampleModel, self).__init__()
self.factor = factor
def forward(self, x):
return x * self.factor
# Define a wrapper model with a ModuleDict
class WrapperModel(nn.Module):
def __init__(self, path):
super(WrapperModel, self).__init__()
self.model = torch.jit.load(path)
def forward(self, name: str, x):
return self.model(x)
scripted_model = torch.jit.script(ExampleModel(2))
scripted_model.save("model.jit")
# Initialize the WrapperModel
wrapper = WrapperModel("model.jit")
与:
wrapper
我有错误:
import pickle
pickle.dumps(wrapper)
totorchscript模型并不是要直接腌制。将它们视为模型的特殊冷冻版本,无法以通常的方式保存。 这是一个简单的修复 - 只需将火有关模型包装在模块中
RuntimeError: Tried to serialize object __torch__.___torch_mangle_3.ExampleModel which does not have a __getstate__ method defined!
通过使用self._model(带有下划线),我们告诉Pytorch“嘿,不要试图保存此部分”。这样,您可以无问题腌制包装纸