一、簡介
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/zh-hk/n/370097.html