我尝试在 AllenNLP v2.0.1 中实现主动学习过程。但是,在当前的GradientDescentTrainer
实施情况下,我无法继续对新一批Instance
.
该模型(也使用 AllenNLP 进行了训练)已在初始训练数据集上完成了预定义时期数的训练。Model.from_archive
我使用该方法恢复模型,并使用静态构造函数Trainer
为它实例化。Trainer.from_params
Instance
此后,当我尝试通过调用继续对新批次进行训练时trainer.train()
,由于方法中的以下代码片段,它会跳过训练_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 训练配置文件中定义的时期数。
简单地说,我的要求是加载一个已经训练过的 AllenNLP 模型,并继续在一批新实例上训练它(实际上是单个实例,我将使用 a 加载SimpleDataLoader
)
我还在下面附上了 Trainer 的配置。我使用的模型是 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"
}
]
}