mindspore的 这个自动微分怎么就运行不了?

问题描述:

#!/usr/bin/python

import math  

import mindspore as ms

from mindspore import ops

grad_all = ops.composite.GradOperation()

def func(x):

    return math.exp(x)

def df_func(x):

    return grad_all(func)(x)

@ms.ms_function

def df2_func(x):

    return grad_all(df_func)(x)

if __name__ == "__main__":

print(df2_func(ms.Tensor(2, ms.float32)))

 这段代码是从mindspore教程中摘录下来的

当  func 函数为 return  x*x*x就没问题,改为exp(x)就运行不了,是怎么回事?

出错提示如下:

[ERROR] PIPELINE(3686,7fb05667a740,python3):2022-03-29-08:25:08.561.938 [mindspore/ccsrc/pipeline/jit/pipeline.cc:906] Compile]

# In file ./grad.py(12)

    return math.exp(x)

           ^

Traceback (most recent call last):

  File "./grad.py", line 22, in <module>

    print(df2_func(ms.Tensor(2, ms.float32)))

  File "/home/ych/.local/lib/python3.8/site-packages/mindspore/common/api.py", line 447, in staging_specialize

    out = _MindsporeFunctionExecutor(func, ms_create_time, input_signature, process_obj)(*args)

  File "/home/ych/.local/lib/python3.8/site-packages/mindspore/common/api.py", line 90, in wrapper

    results = fn(*arg, **kwargs)

  File "/home/ych/.local/lib/python3.8/site-packages/mindspore/common/api.py", line 358, in __call__

    phase = self.compile(args_list, self.fn.__name__)

  File "/home/ych/.local/lib/python3.8/site-packages/mindspore/common/api.py", line 326, in compile

    is_compile = self._graph_executor.compile(self.fn, args_list, phase, True)

  File "/home/ych/.local/lib/python3.8/site-packages/mindspore/_extends/parse/parser.py", line 230, in resolve_symbol

    raise e

  File "/home/ych/.local/lib/python3.8/site-packages/mindspore/_extends/parse/parser.py", line 227, in resolve_symbol

    raise NotImplementedError(f"Not support for '{symbol}'.")

NotImplementedError: Not support for 'exp'.

解答:

您可以使用ops.Exp算子,尽量不要使用其他库函数操作Tensor,无法保证这个算子是支持输入Tensor的,mindspore提供了很多功能的算子,您可以https://www.mindspore.cn/docs/api/zh-CN/master/index.html查看。mindspore.ops.GradOperation的具体用法请参考官方文档,看您需要哪一种场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值