欢迎访问宙启技术站
智能推送

探讨Python中tanh()函数与sigmoid()函数之间的关系

发布时间:2024-01-07 22:14:28

在讨论 Python 中 tanh() 函数和 sigmoid() 函数之间的关系之前,首先需要了解这两个函数的定义和用法。

tanh() 函数是一个双曲正切函数,其定义如下:

tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))

双曲正切函数的取值范围在 -1 到 1 之间,它是一个将实数映射到 (-1, 1) 范围的非线性函数。该函数在输入接近于正无穷或负无穷时,输出趋近于 1 或 -1;当输入接近于 0 时,输出趋近于 0。

sigmoid() 函数是一个 S 形曲线函数,也称为逻辑函数或 Logistic 函数,其定义如下:

sigmoid(x) = 1 / (1 + e^(-x))

Sigmoid 函数的取值范围在 0 到 1 之间,它将实数映射到 (0, 1) 范围。该函数在输入接近于正无穷时,输出趋近于 1;在输入接近于负无穷时,输出趋近于 0;当输入接近于 0 时,输出接近于 0.5。

由于 tanh() 函数的输出范围在 (-1, 1) 之间,sigmoid() 函数的输出范围在 (0, 1) 之间,可以发现 tanh() 函数实际上是 sigmoid() 函数的缩放版本。具体来说,tanh(x) = 2 * sigmoid(2x) - 1。

下面通过使用例子来探讨 tanh() 函数和 sigmoid() 函数之间的关系:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 100)  # 在范围 -10 到 10 内生成 100 个等间距的点

y_tanh = np.tanh(x)
y_sigmoid = 1 / (1 + np.exp(-x))

plt.plot(x, y_tanh, label='tanh')
plt.plot(x, y_sigmoid, label='sigmoid')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Comparison of tanh and sigmoid functions')
plt.legend()
plt.show()

运行以上代码,我们得到了一个图形,横坐标是输入值 x,纵坐标是相应的函数输出值 y。图中展示了 tanh() 函数的曲线和 sigmoid() 函数的曲线。

从图中可以看出,tanh() 函数和 sigmoid() 函数在形状上非常相似,都呈现出一个弯曲的 S 形,但是 tanh() 函数的输出范围在 (-1, 1) 之间,而 sigmoid() 函数的输出范围在 (0, 1) 之间。

tanh() 函数和 sigmoid() 函数在机器学习中经常被用于激活函数,用于将输入进行非线性的映射。它们可以用于神经网络中的隐藏层,以及逻辑回归和二分类问题中的输出层。

总结来说,tanh() 函数和 sigmoid() 函数是非线性的数学函数,在形状上非常相似,但输出范围不同。tanh() 函数是 sigmoid() 函数的缩放版本,通过适当的缩放和平移可以将 sigmoid() 函数变换为 tanh() 函数。它们在机器学习中有着重要的应用,特别是在神经网络中的激活函数的选择上。