AllenNLP 多任务模型:为新头保留编码器权重

AllenNLP Multi-Task Model: Keep encoder weights for new heads

我训练了一个 (AllenNLP) 多任务模型。我想保留 encoder/backbone 权重并继续在新数据集上使用新的 heads 进行训练。我如何使用 AllenNLP 做到这一点?

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

  1. 我跟着 this AllenNLP tutorial 加载了经过训练的模型,然后我不只是进行预测,而是想更改配置和模型头以继续在新数据集上进行训练...但我有点不知道该怎么做。

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

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

感谢任何帮助:)

您的第二个想法是首选方式,您可以通过使用 PretrainedModelInitializer. See the CopyNet 模型来实现,作为如何将其添加到您的模型的示例。