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开始时被调用。

  • on_train_epoch_end (Function) - 训练每个epoch结束时被调用。

  • on_train_step_begin (Function) - 训练每个step开始时被调用。

  • on_train_step_end (Function) - 训练每个step结束时被调用。

  • on_train_begin (Function) - 模型训练开始时被调用。

  • on_train_end (Function) - 模型训练结束时被调用。

  • on_eval_epoch_begin (Function) - 推理的epoch开始时被调用。

  • on_eval_epoch_end (Function) - 推理的epoch结束时被调用。

  • on_eval_step_begin (Function) - 推理的每个step开始时被调用。

  • on_eval_step_end (Function) - 推理的每个step结束时被调用。

  • on_eval_begin (Function) - 模型推理开始时被调用。

  • on_eval_end (Function) - 模型推理结束时被调用。

样例:

>>> 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