python - 我可以用符号代替表达式吗?
问题描述
我想象征性地检查 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 = sympy.Symbol('X')
print(sigmoid_deriv.subs({sigmoid: X}))
输出:
exp(-x)/(1 + exp(-x))**2
所需的输出:
X*(1 - X)
解决方案
感谢@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)
谢谢。
推荐阅读
- jquery - jquery动态添加的行是重叠行c#
- sql - 如何仅选择具有至少 2 个非缺失值的行
- javascript - Google Chrome 扩展从 LINK 获取子属性标题
- sql-server - T-SQL - 关键字“触发器”附近的语法不正确,需要外部
- python - 如何使用 OpenCensus 发送指标
- .net-core - 清理 EF Core 的 GetDbConnection?
- apache-zookeeper - 当 ZooKeeper 追随者被删除时会发生什么?
- microsoft-graph-api - 尝试使用图形和电源自动创建私有设备时出错
- c++ - 无法编译 CGAL 示例 Triangulation_2
- qt - 将值分配给 QtObject 的别名时出现问题