该模型为我总结了文本。
发布于 2020-04-01 00:39:25
是的,你可以这样做。
但您需要记住的一件事是,模型的input_shape保持不变,因此您必须指定希望输入到模型的maximum序列长度。
现在回到你能做什么-
如果更改模型的输入,则后续层的输入形状也会更改。
您可以做的是复制模型体系结构及其预先训练的权重,并使用所需的输入形状对其进行微调。无论您使用的是PyTorch还是其他框架,这都无关紧要。只有input_shape会根据您的要求进行更改。PyTorch将模型权重保存在OrderedDict中,您可以加载预先训练的模型并从那里复制权重。
示例:
model1 = TheModelClass(*args, **kwargs)
model1.load_state_dict(torch.load(PATH_TO_PRETRAINED_MODEL))
model1.eval()
model2 = TheNewModelClass(*args, **kwargs)
params1 = model1.named_parameters()
params2 = model2.named_parameters()
dict_params2 = dict(params2)
for name1, param1 in params1:
if name1 in dict_params2:
dict_params2[name1].data.copy_(param1.data)您可以在这里的PyTorch论坛中找到一些很好的参考链接:
https://discuss.pytorch.org/t/copying-weights-from-one-net-to-another/1492
https://discuss.pytorch.org/t/copy-weights-only-from-a-networks-parameters/5841
https://stackoverflow.com/questions/60918676
复制相似问题