函数变换获得梯度计算函数时报错AttributeError: module 'mindspore' has no attribute 'value_and_grad'

1 系统环境

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

2 报错信息

2.1 问题描述

快速入门教程中的“模型训练”,通过函数变换获得梯度计算函数时,出现报错。

2.2 报错信息

AttributeError: module 'mindspore' has no attribute 'value_and_grad'复制

2.3 脚本代码(代码格式,可上传附件)

# Get gradient function
grad_fn = mindspore.value_and_grad(forward_fn, None, optimizer.parameters, has_aux=True)

3 根因分析

查看1.10的api

mindspore.ops.value_and_grad
value_and_grad是在ops下面的,所以mindspore.value_and_grad会报错,应该修改为mindspore.ops.value_and_grad

4 解决方案

修改为

grad_fn = mindspore.ops.value_and_grad(forward_fn, None, optimizer.parameters, has_aux=True)

运行不报错