问题描述:
【功能模块】
模型训练
复杂非特定loss训练过程无法在Mindspore中找到对应的框架
【操作步骤&问题现象】
1、对于下图所示的pytorch训练过程,loss由两项复杂计算获得,相加得到一个浮点数,需对该loss做backward并更新optimizer中的参数
2、Mindspore中的训练过程是将loss形式固定,再通过Model.train来进行训练,无法针对复杂的非特征loss函数进行梯度计算与梯度更新,想请问Mindspore中如何操作可以完成以下任务的复现。
【截图信息】
解答:
MindSpore支持自定义loss的,比如yolov3_darknet53的loss值是有3项相加得到的,源码: https://gitee.com/mindspore/models/blob/master/official/cv/yolov3_darknet53/src/yolo.py#L402-405
你需要自定义Cell子类,将前向网络与loss关联起来,可参考官网教程 损失函数 — MindSpore master documentation