能否通过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,如果提供代码,非常感谢。
我不知道在 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)
输出:
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
,您的渐变就会越精确。
我的问题是用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
中是否可行,但您绝对可以使用 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
,您的渐变就会越精确。