1

我已经训练了一个(AllenNLP)多任务模型。我想保留编码器/骨干的权重,并继续在新数据集上使用新头进行训练。我怎么能用 AllenNLP 做到这一点?

对于如何做到这一点,我有两个基本想法:

  1. 我按照这个 AllenNLP 教程加载了经过训练的模型,然后我想更改配置和模型头以继续在新数据集上进行训练,而不是仅仅进行预测……但我有点迷失在如何做到这一点。

  2. 我想应该可以(a)将先前训练的编码器的状态字典保存在一个文件中,然后(b)指向新模型的配置文件中的那些权重(而不是指向“bert-base-例如,“装箱”-权重)。但是看着PretrainedTransformerEmbedder 类,我看不到如何将自己的模型权重传递给该类。

作为一个额外的问题:是否也可以单独保存头部的权重并用这些权重初始化新的头部?

任何帮助表示赞赏:)

4

1 回答 1

2

您的第二个想法是首选方式,您可以使用PretrainedModelInitializer. CopyNet有关如何将其添加到模型的示例,请参见模型。

于 2021-03-31T18:48:34.987 回答