【发布时间】:2021-06-23 10:12:19
【问题描述】:
是否可以将 pytorch 模型包装在另一个 pytorch 模块中?我无法像迁移学习(简单地连接更多层)那样以正常方式做到这一点,因为为了获得下一个“层”的预期值,我需要等待第一个模块的最后一层来生成多个输出(比如说 100)并使用所有这些输出来获取下一个“层”的值(比如取这些输出的最大值)。我试图将集成模型定义为如下所示:
class integrated(nn.Module):
def __init__(self):
super(integrated, self)._init_()
def forward(self, x):
model = VAE(
encoder_layer_sizes=args.encoder_layer_sizes,
latent_size=args.latent_size,
decoder_layer_sizes=args.decoder_layer_sizes,
conditional=args.conditional,
num_labels=10 if args.conditional else 0).to(device)
device = torch.device('cpu')
model.load_state_dict(torch.load(r'...')) # the first model is saved somewhere else beforehand
model.eval()
temp = []
for j in range(100):
x = model(x)
temp.append(x)
y=max(temp)
return y
我想这样做的原因是我需要使用的库要求输入本身是一个 pytorch 模块。否则我可以简单地将最后一部分留在模块之外。
【问题讨论】:
标签: pytorch