allenlp v2.0.1中的主动学习

  • 本文关键字:学习 v2 allenlp allennlp
  • 更新时间 :
  • 英文 :


我尝试在allenlp v2.0.1中实现一个主动学习过程。然而,由于目前GradientDescentTrainer的实施,我无法继续对新一批Instance进行培训。

该模型(也使用AllenNLP进行训练)已经在初始训练数据集上完成了预定义的epoch数的训练。我使用Model.from_archive方法恢复模型,并使用Trainer.from_params静态构造函数为其实例化Trainer

此后,当我试图通过调用trainer.train()继续训练新一批Instance时,由于_try_train方法中的以下代码片段,它跳过了训练,

for epoch in range(epoch_counter, self._num_epochs)

这是因为epoch_counter被恢复为5,这是之前在初始训练数据上训练的结果。这是它的相关代码片段,

def _try_train(self) -> Tuple[Dict[str, Any], int]:
try:
epoch_counter = self._restore_checkpoint()

self._num_epochs也是5,我认为这是我的。jsonnet训练配置文件中定义的epoch的数量。

简单地说,我的要求是加载一个已经训练过的AllenNLP模型,并继续在新一批实例上训练它(实际上是单个实例,我将使用SimpleDataLoader加载)

我还附上了下面培训师的配置。我使用的模型是围绕BasicClassifier的自定义包装器,仅用于记录附加指标。

提前感谢。

"trainer": {
"num_epochs": 5,
"patience": 1, // for early stopping
"grad_norm": 5.0,
"validation_metric": "+accuracy",
"optimizer": {
"type": "adam",
"lr": 0.001
},
"callbacks": [
{
"type": "tensorboard"
}
]
}

几点建议:

  1. 在运行命令行或通过脚本
  2. 时不要打开恢复标志
  3. 为您的第二次培训指定一个不同的序列化目录

最新更新