我想象征性地检查S型函数的导数是通过使用S型函数表示的。我在下面编写了旨在将Expression替换为Symbol的代码,但是输出结果不是我期望的。如何正确进行替换?
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)
答案 0 :(得分:1)
感谢@ComplicatedPhenomenon,它解决了。这是代码。
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)
输出:
X*(1 - X)
谢谢。