MindSpore报错untimeError: Exceed function call depth limit 1000.
收藏回复举报
MindSpore报错untimeError: Exceed function call depth limit 1000.
发表于2023-02-12 20:57:55
0 查看

1 系统环境

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

MindSpore版本: 1.9.0

执行模式(PyNative/ Graph): Graph

Python版本: 3.7.5

操作系统平台:不限

2 报错信息

2.1  问题描述

在CPU平台上,调用GRU可以处理的数据的长度受限。

2.2  报错信息

RuntimeError: Exceed function call depth limit 1000, (function call depth: 1001, simulate call depth: 999).
It's always happened with complex construction of code or infinite recursion or loop.
Please check the code if it's has the infinite recursion or call 'context.set_context(max_call_depth=value)' to adjust this value.
If max_call_depth is set larger, the system max stack depth should be set larger too to avoid stack overflow.
For more details, please refer to the FAQ at https://www.mindspore.cn.

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

from mindspore import nn,Tensor
import numpy as np

net = nn.GRU(10, 16, 2, has_bias=True, batch_first=True, bidirectional=False)
x = Tensor(np.ones([3, 500, 10]).astype(np.float32)) #序列长度改成500就会报错
h0 = Tensor(np.ones([1 * 2, 3, 16]).astype(np.float32))
output, hn = net(x, h0)
print(output.shape)

3 根因分析

******此处由用户补充详细的定位过程******

CPU上该算子由小算子拼接实现,有个步骤需循环seq_len次,在静态图模式下,会有复杂度过高的问题.

尝试:

或者使用动态图模式。

4 解决方案

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

尝试1:设置为动态图模式

from mindspore import nn,Tensor
import numpy as np

ms.set_context(mode=ms.PYNATIVE_MODE)
net = nn.GRU(10, 16, 2, has_bias=True, batch_first=True, bidirectional=False)
x = Tensor(np.ones([3, 500, 10]).astype(np.float32)) #序列长度改成500就会报错
h0 = Tensor(np.ones([1 * 2, 3, 16]).astype(np.float32))
output, hn = net(x, h0)
print(output.shape)

尝试2:使用MindSpore2.0.0版本,默认是动态图模式。

本帖最后由 匿名用户2025/04/30 14:05:04 编辑

我要发帖子