PyTorch学习笔记之激活函数篇(二)

2、Tanh函数

2.1 公式

Tanh函数的公式: f ( x ) = e x − e − x e x + e − x f(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} f(x)=ex+exexex
Tanh函数的导函数: f ′ ( x ) = 4 ( e x + e − x ) 2 f'(x) = \frac{4}{(e^x+e^{-x})^2} f(x)=(ex+ex)24 = 1 − [ f ( x ) ] 2 1 - [f(x)]^2 1[f(x)]2

2.2 对应的图像

在这里插入图片描述

2.3 对应生成图像代码

import numpy as np
import matplotlib.pyplot as plt

# 定义 x 的范围
x = np.linspace(-10, 10, 1000)

# 计算 tanh 值
tanh_values = np.tanh(x)

# 计算 tanh 的导数 (1 - tanh^2(x))
derivative_values = 1 - tanh_values ** 2

# 绘制 tanh 函数
plt.plot(x, tanh_values, label='tanh(x)')

# 绘制 tanh 的导数
plt.plot(x, derivative_values, label='derivative of tanh(x)')

# 设置图例
plt.legend()

# 设置标题和轴标签
plt.title('Tanh Function and Its Derivative')
plt.xlabel('x')
plt.ylabel('y')

# 显示图形
plt.grid(True)
plt.show()

2.4 优点与不足

Tanh优点:
1、在分类任务中,双曲正切函数(Tanh)逐渐取代 Sigmoid 函数作为标准的激活函数,其具有很多神经网络所钟爱的特征。它是完全可微分的,反对称,对称中心在原点。
2、输出是S型曲线,具备打破网络层与网络层之间的线性关系,可以把网络层输出非线形地映射到 (−1,1) 区间里。负输入将被强映射为负,而零输入被映射为接近零;tanh 的输出间隔为1且值域是以0为中心的[-1,1](可以解决Sigmoid激活函数输出不以0为中心的问题。)
3、在一般的二元分类问题中,tanh 函数用于隐藏层,而 sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。
Tanh不足:
1、当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。
2、Tanh函数也需要进行指数运算,所以其也会存在计算复杂度高且计算量大的问题。
3、当神经网络的层数增多的时候,由于在进行反向传播的时候,链式求导,多项相乘,函数进入饱和区(导数接近于零的地方)就会逐层传递,这种现象被称为梯度消失。

2.5 torch.tanh()函数

在PyTorch中,torch.tanh 函数用于计算张量中每个元素的双曲正切(hyperbolic tangent)值。这个函数接受一个张量(tensor)作为输入,并返回一个新的张量,其中的每个元素都是输入张量对应元素的双曲正切值。

双曲正切函数 tanh(x) 的定义是 (e^x - e^-x) / (e^x + e^-x),其中 e 是自然对数的底数。tanh 函数的值域是 [-1, 1],并且它是奇函数,即 tanh(-x) = -tanh(x)。

以下是如何在PyTorch中使用 torch.tanh 的示例:

import torch

# 创建一个张量
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])

# 计算双曲正切值
y = torch.tanh(x)

# 输出结果
print(y)

输出将是 x 中每个元素的 tanh 值:

tensor([-0.9640, -0.7616,  0.0000,  0.7616,  0.9640])

在深度学习中,tanh 激活函数常用于隐藏层,因为它可以将输入压缩到 [-1, 1] 的范围内,有助于梯度下降算法的稳定性。不过,在实践中,ReLU 激活函数由于其简单性和性能优势,现在更常用。

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫Devin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值