当总loss由多个loss组成时,如何设计过程?
收藏回复举报
当总loss由多个loss组成时,如何设计过程?
t('forum.solved') 已解决
新人帖
发表于2023-04-19 13:40:42
0 查看

损失函数返回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()的步骤应该在以上哪一步实现?

我要发帖子