我能用Pytorch或Tensorflow得到导数的表达式吗?

我能用Pytorch或Tensorflow得到导数的表达式吗?,tensorflow,pytorch,symbolic-math,Tensorflow,Pytorch,Symbolic Math,我的问题是,在我使用PyTorch或TensorFlow计算推导之后,是否可以得到表达式。为了更好地理解我的问题,我提供了以下示例: 我有一个函数x1,x2和x3都是决策变量 y = x1 + x1*x2 + x1*x3 y相对于x1的导数应为: 1 + x2 + x3 我的问题是,如果我使用PyTorch或TensorFlow进行计算,我能打印出1+x2+x3的表达式吗?非常感谢无论是使用PyTorch还是TensorFlow提供的代码。我不知道在PyTorch或TensorFlow中是否

我的问题是,在我使用PyTorch或TensorFlow计算推导之后,是否可以得到表达式。为了更好地理解我的问题,我提供了以下示例:

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

y = x1 + x1*x2 + x1*x3
y相对于x1的导数应为:

1 + x2 + x3

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

我不知道在PyTorch或TensorFlow中是否可行,但您完全可以使用Symphy 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,您的梯度将更精确。

非常感谢您,prosti。我使用了@Anubhav Singh指出的方法来实现我的目标。再次感谢你!没问题,很高兴你成功了。你也可以去拿符号计算。