问题描述:
【操作步骤&问题现象】
1、定义class LossCallBack(LossMonitor),其中定义了step_end函数,输出epoch、cur_step_num、loss等信息。并将其传入model.train();
2、使用如下命令运行:mpirun --allow-run-as-root -n 2 python train.py --config_path config_hlg/hlg_mobile_imagenet2012_configtandalone.yml --device_num 2
3、只在每个epoch结束时输出,每个step结束时没有调用输出的语句。我想观测每个step的loss值,请大佬帮忙看看是哪里出了问题?
【截图信息】
LossCallBack定义:
losscallback传入model.train():
终端输出信息如下:
解答:
你好,有几点建议可以试一下:
- callback使用参考,可以参考这儿:
https://mindspore.cn/docs/programming_guide/zh-CN/r1.5/custom_debugging_info.html?highlight=step_end#id3
样例代码:docs/sample_code/debugging_info/custom_callback.py · MindSpore/docs - Gitee.com
- 训练的时候,model.train接口,看着你设置的sink_size=step_size, 这里面的step_size是一个epoch中的step数量么;如果这样的话意味着每次会下沉step_size个 batch数据然后参会返回到host侧打印callback中的信息,因此没法每个step打印信息
- 建议基本调试的时候,sink_size可以给小一点,好比1或者2,这样应该能通过step_end打印信息
- 如果仍没有信息,可以试试定义epoch_begin 和 epoch_end, 看看这是否会打印信息