使用MindSpore的value_and_grad 求导梯度为0
收藏回复举报
使用MindSpore的value_and_grad 求导梯度为0
发表于2024-06-21 11:31:59
0 查看

系统环境

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

MindSpore版本: mindspore=2.0.0

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

Python版本: Python=3.9

操作系统平台: 不限

报错信息

2.1问题描述

变量sum_num显示0。已经排查过网络的输入用的张量,不是字典。并且优化器里面的参数都是可训练的。但是还是梯度为0

2.2脚本信息

weights = self.optimizer.trainable_params()
        grad_fn = mindspore.value_and_grad(model, grad_position=None, weights=weights, has_aux=True)
        (total_loss, loss_cls, loss_center, loss_triplet, loss_circle, loss_cosface, loss_triplet_add, loss_triplet_mtrain, loss_stc, loss_triplet_mtest, loss_domain_intra, loss_domain_inter, loss_Center), inputs_gradient = grad_fn(images, targets, domainids, epoch, opt)
        sum_num = mindspore.ops.sum(mindspore.ops.stack([mindspore.ops.sum(item) for item in inputs_gradient]))
        print("total_loss, sum_num", total_loss, sum_num)

根因分析

******此处由用户填写******

解决方案

******此处由用户填写******

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

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

我要发帖子