mindspore.train.LambdaCallback
- class mindspore.train.LambdaCallback(on_train_epoch_begin=None, on_train_epoch_end=None, on_train_step_begin=None, on_train_step_end=None, on_train_begin=None, on_train_end=None, on_eval_epoch_begin=None, on_eval_epoch_end=None, on_eval_step_begin=None, on_eval_step_end=None, on_eval_begin=None, on_eval_end=None)[源代码]
用于自定义简单的callback。
使用匿名函数构建callback,定义的匿名函数将在 mindspore.train.Model.{train | eval | fit} 的对应阶段被调用。
请注意,callback的每个阶段都需要一个位置参数:run_context。
警告
这是一个实验性API,后续可能修改或删除。
- 参数:
on_train_epoch_begin (Function) - 训练每个epoch开始时被调用。默认值:
None
。on_train_epoch_end (Function) - 训练每个epoch结束时被调用。默认值:
None
。on_train_step_begin (Function) - 训练每个step开始时被调用。默认值:
None
。on_train_step_end (Function) - 训练每个step结束时被调用。默认值:
None
。on_train_begin (Function) - 模型训练开始时被调用。默认值:
None
。on_train_end (Function) - 模型训练结束时被调用。默认值:
None
。on_eval_epoch_begin (Function) - 推理的epoch开始时被调用。默认值:
None
。on_eval_epoch_end (Function) - 推理的epoch结束时被调用。默认值:
None
。on_eval_step_begin (Function) - 推理的每个step开始时被调用。默认值:
None
。on_eval_step_end (Function) - 推理的每个step结束时被调用。默认值:
None
。on_eval_begin (Function) - 模型推理开始时被调用。默认值:
None
。on_eval_end (Function) - 模型推理结束时被调用。默认值:
None
。
样例:
>>> import numpy as np >>> import mindspore.dataset as ds >>> from mindspore import nn >>> from mindspore.train import Model, LambdaCallback >>> data = {"x": np.float32(np.random.rand(64, 10)), "y": np.random.randint(0, 5, (64,))} >>> train_dataset = ds.NumpySlicesDataset(data=data).batch(32) >>> net = nn.Dense(10, 5) >>> crit = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') >>> opt = nn.Momentum(net.trainable_params(), 0.01, 0.9) >>> lambda_callback = LambdaCallback(on_train_epoch_end= ... lambda run_context: print("loss:", run_context.original_args().net_outputs)) >>> model = Model(network=net, optimizer=opt, loss_fn=crit, metrics={"recall"}) >>> model.train(2, train_dataset, callbacks=[lambda_callback]) loss: 1.6127687 loss: 1.6106578