迁移网络任务-tacotron2时遇到grad_fn反向求导报错

1.系统环境

硬件环境(Ascend/GPU/CPU): GPU
MindSpore版本: mindspore=2.0
执行模式(PyNative/ Graph):不限
Python版本:3.7
操作系统平台:Linux

2. 问题描述

迁移网络任务-tacotron2时遇到grad_fn反向求导报错

3. 问题分析

mindspore不支持字典类型的正向输出进行反向求导

4. 解决方案

将字典类型的返回变为list,将输出换成了所有loss相加,并且最后返回所有loss的信息。

def forward_fn(images,targets):  
    loss_sum,loss_list = model(images,targets)  
    return loss_sum,loss_list

grad_fn = ms,value_and_grad(forward_fn,grad_position=None,weight=params,has_aux=True)