当总loss由多个loss组成时,该如何组合
收藏回复举报
当总loss由多个loss组成时,该如何组合
发表于2023-08-21 16:19:08
0 查看

1 系统环境

硬件环境(Ascend/GPU/CPU): Ascend/GPU/CPU

MindSpore版本: mindspore=2.0.0

执行模式(PyNative/ Graph):不限

Python版本: Python=3.7

操作系统平台: 不限

2 报错信息

2.1 问题描述

损失函数返回loss1和loss2, 网络中的loss被定义为loss=alpha*loss1 + beta*loss2,其中alpha和beta是参数。使用pytorch的思路描述的话,类似于:

loss1, loss2 = loss_fn(output, target)
loss = alpha*loss1 + beta*loss2
loss.backward()

在自定义返回多个值的loss函数后仍需自定义TrainOneStepCell,使用类似如下的方法实现损失函数返回多个值:

参考:https://mindspore.cn/docs/zh-CN/r2.0.0-alpha/faq/implement_problem.html

net = Net()
loss_fn = MyLoss()
loss_with_net = MyWithLossCell(net, loss_fn)
train_net = MyTrainOneStepCell(loss_with_net, optim)
model = Model(net=train_net, loss_fn=None, optimizer=None)

似于pytorch中整合最终loss=alpha*loss1 + beta*loss2和loss.backward()的步骤应该在以上哪一步实现?

3 根因分析

******此处由用户补充详细的分析过程******

4 解决方案

cke_8232.png

包含文字方案和最终脚本代码

请将正确的脚本打包并上传附件

我要发帖子