您的问题没有提供足够的详细信息,无法正确回答。如果您尝试保存和加载自己的模型并为其定义类,请参阅 this well known answer 并说明为什么这不足以满足您的使用需求。
如果您正在加载 torch.nn.Sequential 模型,那么据我所知,只需直接加载模型并使用它就足够了。如果它没有在 pytorch 论坛上发布,你会得到什么错误。
现在看我的示例,显示套管加载顺序模型,然后正确使用它:
# test for saving everything with torch.save
import torch
import torch.nn as nn
from pathlib import Path
from collections import OrderedDict
import numpy as np
import pickle
path = Path('~/data/tmp/').expanduser()
path.mkdir(parents=True, exist_ok=True)
num_samples = 3
Din, Dout = 1, 1
lb, ub = -1, 1
x = torch.torch.distributions.Uniform(low=lb, high=ub).sample((num_samples, Din))
f = nn.Sequential(OrderedDict([
('f1', nn.Linear(Din,Dout)),
('out', nn.SELU())
]))
y = f(x)
# save data torch to numpy
x_np, y_np = x.detach().cpu().numpy(), y.detach().cpu().numpy()
db2 = {'f': f, 'x': x_np, 'y': y_np}
torch.save(db2, path / 'db_f_x_y')
db3 = torch.load(path / 'db_f_x_y')
f3 = db3['f']
x3 = db3['x']
y3 = db3['y']
xx = torch.tensor(x3)
yy3 = f3(xx)
print(yy3)
应该有一个官方回答如何保存和加载nn.Sequential模型How does one save torch.nn.Sequential models in pytorch properly?但是现在torch.save和torch.load似乎工作得很好。