在这个问题的底部是一组从已发表的神经网络模型转录而来的功能。当我致电R
时,我收到以下错误:
RuntimeError:调用Python对象时超出了最大递归深度
请注意,在每次调用R
时,都会对网络中的每个其他神经元进行R
的递归调用。这是导致超出递归深度的原因。 R
的每个返回值都取决于所有其他值(网络涉及N = 512
总值。)是否有人知道应该使用哪种方法来计算{{1}的自洽解决方案}?请注意,R
本身是一个平滑的函数。我已经尝试将其视为向量解根问题 - 但在这种情况下,512维度不是独立的。有这么多自由度,根本找不到根(使用R
函数)。 Python有没有可以帮助解决这个问题的工具?使用像Mathematica这样的东西解决scipy.optimize
会更自然吗?我不知道这是怎么做到的。
R
答案 0 :(得分:1)
这种递归永远不会结束,因为在递归调用之前没有终止条件,调整最大递归深度没有帮助
def R(x_i):
...
for x_j in x:
sum_term += J(x_i - x_j) * R(x_j)
也许你应该做像
这样的事情# some suitable initial guess
state = guess
while True: # or a fixed number of iterations
next_state = compute_next_state(state)
if some_condition_check(state, next_state):
# return answer
return state
if some_other_check(state, next_state):
# something wrong, terminate
raise ...
答案 1 :(得分:0)
使用sys.setrecursionlimit
import sys
sys.setrecursionlimit(10000)
def rec(i):
if i > 1000:
print 'i is over 1000!'
return
rec(i + 1)
rec(0)
更多信息:https://docs.python.org/3/library/sys.html#sys.setrecursionlimit`