Python 我可以用符号替换表达式吗?
我想用符号的方式检查一下,一个sigmoid函数的导数是用它的sigmoid函数来表示的。我写了下面的代码,打算将表达式替换为符号,但输出不是我所期望的。如何正确地进行此替换Python 我可以用符号替换表达式吗?,python,sympy,Python,Sympy,我想用符号的方式检查一下,一个sigmoid函数的导数是用它的sigmoid函数来表示的。我写了下面的代码,打算将表达式替换为符号,但输出不是我所期望的。如何正确地进行此替换 import sympy # define sigmoid functions x = sympy.Symbol('x') sigmoid = lambda x: 1/(1 + sympy.exp(-x)) sigmoid_deriv = sigmoid(x).diff(x) # define symbol X X =
import sympy
# define sigmoid functions
x = sympy.Symbol('x')
sigmoid = lambda x: 1/(1 + sympy.exp(-x))
sigmoid_deriv = sigmoid(x).diff(x)
# define symbol X
X = sympy.Symbol('X')
print(sigmoid_deriv.subs({sigmoid: X}))
输出:
exp(-x)/(1 + exp(-x))**2
X*(1 - X)
所需输出:
X*(1 - X)
谢谢@complementdphenomenon,问题解决了。这是代码
import sympy
# define sigmoid functions
x = sympy.Symbol('x')
sigmoid = 1/(1 + sympy.exp(-x))
sigmoid_deriv = sigmoid.diff(x)
# define symbol X
X = sympy.Symbol('X')
# solve inverse sigmoid function
eq = sympy.Eq(sigmoid, X)
x_lst = sympy.solve(eq, x)
# unpack result
x2 = x_lst[0]
# substitute x as x2
sigmoid_deriv2 = sigmoid_deriv.subs({x: x2})
# simplify `sigmoid_deriv2`
sigmoid_deriv3 = sympy.simplify(sigmoid_deriv2)
# print simplified sigmoid_deriv
print(sigmoid_deriv3)
输出:
exp(-x)/(1 + exp(-x))**2
X*(1 - X)
谢谢。我认为print(sigmoid_deriv.subs({x:f(sigmoid)}))
更有意义,f(sigmoid)
应该通过求解sigmoid=lambda x:1/(1+sympy.exp(-x))