Могу ли я получить выражение деривации, используя Pytorch или Tensorflow? - PullRequest
0 голосов
/ 24 июня 2019

У меня вопрос: смогу ли я получить выражение после вычисления деривации с помощью PyTorch или TensorFlow.Для лучшего понимания моего вопроса я приведу пример ниже:

У меня есть функция (x1, x2 и x3 - все переменные решения)

y = x1 + x1*x2 + x1*x3

Вывод y в терминахx1 должно быть:

1 + x2 + x3

Мой вопрос: если я использую PyTorch или TensorFlow, сделаю вычисление, могу ли я вывести выражение «1 + x2 + x3»?Очень признателен, если коды предоставляются независимо от того, используется ли PyTorch или TensorFlow.

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Я не знаю, возможно ли это в Pytorch или Tensorflow, но вы определенно можете сделать это, используя SymPy библиотеку python:

import sympy
x1 = sympy.symbols('x1')
x2 = sympy.symbols('x2')
x3 = sympy.symbols('x3')

y = x1 + x1*x2 + x1*x3
res = sympy.diff(y, x1)

print(res)

output:

x2 + x3 + 1
0 голосов
/ 24 июня 2019

Ответ - нет.И PyTorch, и TensorFlow не предоставят вам символические выражения.Тем не менее, они могут получить вам градиенты.

Вот простой пример в PyTorch:

x = torch.tensor([5.], requires_grad=True);
print(x) # tensor([5.], requires_grad=True)

y = 3*x**2
y.backward()
x.grad # tensor([30.])

Как бы вы получили это значение 30 в обычном питоне?

def y(x):
    return 3*x**2

x=5
print(y(x)) #75
e=0.01 #etha
g=(y(x+e)-y(x))/e 
print(g) # 30.0299

Если вы используете меньшее значение etha, тем более точным будет ваш градиент.

...