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

文章目录

    • 2、Tanh函数
      • 2.1 公式
      • 2.2 对应的图像
      • 2.3 对应生成图像代码
      • 2.4 优点与不足
      • 2.5 torch.tanh()函数

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 激活函数由于其简单性和性能优势,现在更常用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/278473.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】学习笔记04-函数

4.1 函数介绍 1. 函数是: 组织好的、可重复使用的、用来实现特定功能的代码段 2. 使用函数的好处是: • 将功能封装在函数内,可供随时随地重复利用 • 提高代码的复用性,减少重复代码,提高开发效率 4.2 函数的定义 …

数据库系统概念(第二周 第二堂)(关系模型)

目录 回顾 关系模型 历史与现状 组成成分 数据结构——关系 关系定义 关系性质 关系和关系模式 难点概念理解 关系属性的分类 一、超码(superkey) 二、候选码(candidate key) 三、主码(primary key&#…

智慧公厕对于智慧城市管理的意义

近年来,智慧城市的概念不断被提及,而智慧公厕作为智慧城市管理的重要组成部分,其在监测、管理和养护方面发挥着重要的作用。智慧公厕不仅是城市市容提升的重要保障,还能提升城市环境卫生管理的质量,并有效助力创造清洁…

【Paper Reading】6.RLHF-V 提出用RLHF的1.4k的数据微调显著降低MLLM的虚幻问题

分类 内容 论文题目 RLHF-V: Towards Trustworthy MLLMs via Behavior Alignment from Fine-grained Correctional Human Feedback 作者 作者团队:由来自清华大学和新加坡国立大学的研究者组成,包括Tianyu Yu, Yuan Yao, Haoye Zhang, Taiwen He, Y…

计算机二级(Python)真题讲解每日一题:《十字叉》

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬ ‪‬‪‬‪‬‪‬‪‬‮‬‪…

centos创建并运行一个redis容器 并支持数据持久化

步骤 : 创建redis容器命令 docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes 进入容器 : docker exec -it mr bash 链接redis : redis-cli 查看数据 : keys * 存入一个数据 : set num 666 获取数据 : get num 退出客户端 : exit 再退…

phpcms头像上传漏洞引发的故事

目录 关键代码 第一次防御 第一次绕过 第二次防御 第二次绕过 第三次防御 第三次绕过 如何构造一个出错的压缩包 第四次防御 第四次绕过 本篇文章是参考某位大佬与开发人员对于文件包含漏洞的较量记录下的故事,因为要学习文件包含漏洞,就将大佬…

2024-Spring IOC 和 AOP源码分析(上篇)

**前言:**笔者最近面了几次大厂。。。开局Spring源码暴击 之前看过忘了写篇总结。。。 1、介绍一下Spring 核心组件: 常用模块: 常用注解: 2、说一下SpringIOC原理 概念:Spring 通过一个配置文件描述 Bean 及 B…

二叉树算法

递归序 每个节点都能回到3次! 相当于2执行完然后返回了代码会往下走,来到3节点 小总结: 也就是4节点先来到自己一次,不会执行if,先调用自己左边的那个函数,但是是null,直接返回。 这个函数执行完了,就会回到自己,调用自己右边的那个函数,结果又是空,又返回,回到…

Elasticsearch:调整近似 kNN 搜索

在我之前的文章 “Elasticsearch:调整搜索速度”,我详细地描述了如何调整正常的 BM25 的搜索速度。在今天的文章里,我们来进一步探讨如何提高近似 kNN 的搜索速度。希望对广大的向量搜索开发者有一些启示。 Elasticsearch 支持近似 k 最近邻…

基于vue实现bilibili网页

学校要求的实验设计,基于vue实现bilibili网页版,可实现以下功能 (1)基本的悬浮动画和页面渲染 (2)可实现登录和未登录的页面变化 (3)在登录页面的,实现密码判断,或者短信验证方式的倒数功能 (4)实现轮播图 (5)实现预览视频(GIF) (6)页面下拉到一定高度出现top栏以及右下角的返回…

每日五道java面试题之mybatis篇(一)

目录: 第一题. MyBatis是什么?第二题. ORM是什么?第三题. 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?第四题. 传统JDBC开发存在的问题第五题. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的…

UE5数字孪生系列笔记(二)

智慧城市数字孪生系统 制作流云动画效果 首先添加一个图像在需要添加流云效果的位置 添加动画效果让其旋转 这个动画效果是程序开始就要进行的,所以要在EventConstruct中就可以启动这个动画效果 添加一个一样的图像在这里,效果是从此处进行放大消散 添…

python 调用redis创建查询key

部署redis apiVersion: apps/v1 # 描述api版本,默认都用这个 kind: Deployment # 资源类型,可以配置为pod,deployment,service,statefulset等等 metadata: # deployment相关的元数据,用于描述deployment的…

Python——字典

一、字典特性介绍 字典在 Python 中极为重要,是属于映射类型的数据结构。 字典有⼀对⼉⼤括号组成 {} , 字典内的元素都是成对⼉出现的 {"a":1} , 他们⽤英⽂的冒号( : )隔开, 左边叫做键(key),右边的叫值(value), 通常叫做键值对⼉。 每个元素⽤英⽂的逗…

设计模式深度解析:工厂方法模式与抽象工厂模式的深度对比

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 设计模式深度解析:工厂方法模式与抽象工厂模式的深度对比 探索设计模式的魅力&#x…

Redis 八种常用数据类型详解

夯实基础,这篇文章带着大家回顾一下 Redis 中的 8 种常用数据类型: 5 种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zse…

Vue.js+SpringBoot开发食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…

rocky9 编写一键安装mysql 的sh脚本

基本操作步骤 1、虚拟机最小化安装rocky9系统,安装后克隆一个系统;1个用来获取下载的rpm包,一个用来编写sh 测试脚本; 2、修改虚拟机的 yum配置文件,获取获取rpm程序 :启用缓存,并修改yum下载…

在Latex中优雅的插入svg图片(Ubuntu22.04)

文章目录 一、前言二、准备工作三、脚本编程四、结论 一、前言 在 LaTeX \LaTeX LATE​X 中,插入图片常用的为 figure 环境加 \includegraphics 命令: \begin{figure}[!htbp]\centering\includegraphics[width\textwidth]{图片名.jpg/jpeg/png/pdf}\c…