我正在尝试为非线性 PDE 实现基于 autograd 的求解器。与大多数 PDE 一样,我需要能够在输入向量的各个条目中进行操作,但显然这会破坏 autograd。我创建了这个简单的示例来展示我面临的问题:
以下代码有效:
def my_equation(x):
eq = x
return eq
x = np.random.randn(2,)
jac = autograd.jacobian(my_equation)
jacval = jac(x)
print(jacval)
以下代码不起作用:
def my_equation(x):
eq = x
# This breaks the code, although is a
# trivial line
eq[1] = x[1]
return eq
x = np.random.randn(2,)
jac = autograd.jacobian(my_equation)
jacval = jac(x)
print(jacval)
我在几个地方读过你不能在 autograd 中分配元素。这真的是真的吗。有什么解决方法吗?或者也许另一个图书馆建议?
谢谢!