Я пытаюсь реализовать решатель на основе автограда для нелинейного УЧП. Как и в случае с большинством PDE, мне нужно иметь возможность работать с отдельными элементами моего входного вектора, но, по-видимому, это нарушает автоград. Я создал этот простой пример, чтобы показать проблему, с которой я столкнулся:
Работает следующий код:
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)
Я читал в нескольких местах, что вы не можете назначать элементы в автограде. Действительно ли это так. Есть ли обходной путь? Или может другую библиотеку предложить?
Благодарю вас!