一、简介
np.tanh是numpy库中的一个函数,常被用来处理神经网络中的激活函数,或者数学中的一些复杂计算。tanh即双曲正切函数。
二、单变量情形
首先,我们看下单变量tanh函数在数学中的表达式:
$$ \tanh(x) = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} $$
这个函数的图像如下示意:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 1000)
y = np.tanh(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('tanh(x)')
plt.show()
这个函数的取值范围为[-1, 1],当x越接近0时,y越接近于0,当x远离0时,y越趋近于1或-1。同时,这个函数呈现出S型的特点。
三、多变量情形
如果我们考虑在多变量情况下,使用tanh函数,那么可以根据上述公式拓展:
$$ \tanh(\mathbf{x}) = \frac{\mathbf{e}^{\mathbf{x}}-\mathbf{e}^{-\mathbf{x}}}{\mathbf{e}^{\mathbf{x}}+\mathbf{e}^{-\mathbf{x}}} $$
其中,\mathbf{x}为一个向量。
四、神经网络中的应用
在神经网络中,激活函数具有很重要的意义。tanh函数常被用作隐藏层的激活函数,因为tanh函数不仅符合sigmoid函数的一些性质,而且均值为0,方差为1。这有助于数据的中心化处理,并且可以加快梯度下降的速度。
例如,如果我们结合Keras库的使用,可以定义一个简单的神经网络模型:
import tensorflow as tf
from tensorflow import keras
model = keras.Sequential([
keras.layers.Dense(10, input_shape=(3,), activation=tf.nn.tanh),
keras.layers.Dense(1, activation=tf.nn.sigmoid)
])
model.compile(loss='binary_crossentropy', optimizer='adam')
这里定义了一个包含一个10个节点的隐藏层的神经网络模型,其中隐藏层的激活函数是tanh函数。
五、总结
在大多数数学计算、深度学习中,tanh函数都是一个非常有用的函数。tanh函数的S型特征给用户提供了非常好的非线性工具,并且tanh函数的均值为0,方差为1对于神经网络的应用也非常方便。
原创文章,作者:CSXGV,如若转载,请注明出处:https://www.506064.com/n/370097.html