当前使用AllenNLP 1.2和commands
api的训练模型:
allennlp train -f --include-package custom-exp /usr/training_config/mock_model_config.jsonnet -s test-mock-out
我正在尝试在训练完成后对测试数据集执行正向传递。我知道如何添加epoch_callback
,但不确定end_callback
的语法。
在我的config.json
中,我有以下内容:
{
...
"trainer": {
...
"epoch_callbacks": [{"type": 'log_metrics_to_wandb',},]
}
...
}
我试过:
"end_callback": [{"type": 'my_custom_function',},]
但是得到了一个非法的论点错误。此外,我不确定如何准确地指定确切的自定义功能并将其传达给培训师。
我认为您可以创建一个新的回调函数/对象,该函数/对象继承自TrainerCallback并覆盖on_end
方法,然后如果您以与上面的log_metrics_to_wandb
相同的方式注册它,它应该可以正常工作。
对于像我一样使用allennlp迷路的人来说,这只是一个更完整的例子,它对我有效:
定义回调,注册它并覆盖您想要调用的任何方法:
from allennlp.training.callbacks.callback import TrainerCallback
@TrainerCallback.register("log_metrics_to_wandb")
class LogMetricCallback(TrainerCallback):
def on_end(self, trainer, metrics, epoch, is_primary=True, **kwargs):
...
并将其添加到trainer下的配置文件中->回调
{
...
"trainer": {
...
"callbacks": [{"type": 'log_metrics_to_wandb',},]
}
...
}
我用2.4.0版本测试了它,但根据文档,它应该没有太大变化。