Если я хочу дать пользовательский или известный градиент для функции, как я могу это сделать в библиотеке ad
?(Я не хочу авто-дифференцировать через эту функцию.) Я использую функцию grad в этой библиотеке.
Если библиотека не предоставляет эту функцию, есть ли способ, которым я могуЯ могу легко реализовать эту функцию самостоятельно, возможно, изменив определения листовых узлов в ad
или отредактировав двойные числа, которые предположительно несут числовые градиенты?
Вот конкретный пример того, что я имею в виду:
Скажем, у меня есть некоторая функция, которую я хочу взять градиент, скажем, f(x, y) = x^2 + 3 * g(x, y)^2
.Затем скажите, что g(x, y)
- это функция, определение которой сложно, но градиент которой я уже рассчитал аналитически и довольно прост.Таким образом, когда я беру grad f
и оцениваю его в точке (x, y)
, я хотел бы просто подключить свой собственный градиент для g
вместо автоматического отклонения через него: что-то вроде my_nice_grad_of_g (x, y)
.
Я вижу, что другие библиотеки AutoDiff предоставляют эту функцию, например Stan и Tensorflow обе позволяют пользователям определять градиенты функции.