深度学习之激活函数——Tanh

Tanh

双曲正切1函数(tanh),其图像与sigmoid函数十分相近,相当于sigmoid函数的放大版。在实际的使用中,tanh函数要优先于sigmoid函数。

函数表达式

t a n h = e x − e − x e x + e − x tanh=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh=ex+exexex

其定义域为 R R R,值域为 ( − 1 , 1 ) (-1,1) (1,1)

函数图像

请添加图片描述

函数特性

由于tanh激活函数与sigmoid激活函数十分相似,所以两者在特性方面有很多共同点

实际上,tanh激活函数相当于sigmoid函数的平移: t a n h ( x ) = 2 s i g m o i d ( 2 x ) − 2 tanh(x)=2sigmoid(2x)−2 tanh(x)=2sigmoid(2x)2

优点:
  • 以0位对称中心,收敛速度快于sigmoid,提高了权重更新的效率

  • 部分解决了梯度消失的问题,因为其导数值更大

    tanh导数值与sigmoid导数值对比:

    请添加图片描述

    通过对比不难发现,tanh的导数值要远远大于sigmoid的导数值

缺点:
  • 与sigmoid一样,tanh函数具有容易饱和的特点,没有根治梯度消失的问题
    igmoid一样,tanh函数具有容易饱和的特点,没有根治梯度消失的问题
  • 计算复杂度较高,幂运算更加复杂
### Tanh 激活函数详解 #### 定义 Tanh (双曲正切) 是一种常用的激活函数,在神经网络中用于引入非线性特性。该函数会将输入映射到 (-1, 1) 的范围内,这有助于标准化数据并加速训练过程。 #### 公式 Tanh 函数的数学表达式如下: \[ \text{Tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \] 此公式可以通过 Python 和 NumPy 来实现: ```python import numpy as np def tanh(x): return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x)) ``` 为了提高计算效率,也可以利用 `numpy.tanh` 方法直接调用底层优化过的 C 实现[^2]: ```python import numpy as np def efficient_tanh(x): return np.tanh(x) ``` #### 应用场景 Tanh 激活函数广泛应用于多种类型的神经网络架构中,特别是在早期的多层感知机和循环神经网络里。然而,随着 ReLU 及其变体的发展,这些新激活函数由于具有更好的梯度传播特性和更高的计算效率而逐渐成为主流选择[^3]。 尽管如此,在某些情况下仍然推荐使用 Tanh: - 当希望输出范围限定在 [-1, 1] 而不是 [0, 1] 时; - 对于一些特定的任务如生成对抗网络(GANs),其中判别器的最后一层经常采用 Tanh 函数以确保输出图像像素值位于合理区间内。 #### 实现方式 除了上述提到的基础实现外,还可以通过 Keras 等高层框架快速构建含有 Tanh 激活层的模型。下面展示了如何向全连接层添加 Tanh 激活功能[^4]: ```python from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense model = Sequential() model.add(Dense(64, activation='tanh')) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值