能否通过Pytorch或Tensorflow获取求导表达式?

Can I obtain the expression of derivation by using Pytorch or Tensorflow?

我的问题是用PyTorch或TensorFlow推导后能否得到表达式。为了更好地理解我的问题,我在下面提供了一个示例:

我有一个函数(x1,x2,x3都是决策变量)

y = x1 + x1*x2 + x1*x3

y 对 x1 的推导应该是:

1 + x2 + x3

我的问题是,如果我使用PyTorch或TensorFlow计算,是否可以打印出“1 + x2 + x3”的表达式?无论使用 PyTorch 还是 TensorFlow,如果提供代码,非常感谢。

我不知道在 PytorchTensorflow 中是否可行,但您绝对可以使用 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)

输出:

x2 + x3 + 1

答案是否定的。 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.])

如何在普通 python 中得到这个值 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,您的渐变就会越精确。