【深度学习基础】激活函数:Tanh、Sigmoid 和 Softmax

news2025/1/13 17:44:03

激活函数是深度学习模型中不可或缺的一部分,它们赋予神经网络强大的非线性变换能力,使其能够拟合复杂的函数关系。在这篇博文中,我们将探讨三种常见的激活函数:Tanh、Sigmoid 和 Softmax,并提供一些记忆它们的技巧。


1. Tanh 函数

定义
Tanh(双曲正切函数)将输入值压缩到 [-1, 1] 的范围内。其公式如下:
在这里插入图片描述

应用场景

  • 常用于隐藏层的激活函数,特别是在需要零均值化数据的场景。
  • 广泛应用于循环神经网络(RNN)中。

优缺点

  • 优点:输出范围是 [-1, 1],零中心化可以使得数据更好地对称,帮助梯度下降算法更有效地进行优化。
  • 缺点:存在梯度消失问题,当输入值过大或过小时,梯度会变得非常小,影响深层神经网络的训练效果。

示例代码

import numpy as np

def tanh(x):
    return np.tanh(x)

# 示例输入
logit = 0.5
output = tanh(logit)
print(output)  # 输出 0.46211715726000974

记忆技巧

  • Tanh 是“双曲正切”的缩写,输出范围 [-1, 1],零中心化,适合隐藏层。

2. Sigmoid 函数

定义
Sigmoid 函数将输入值压缩到 [0, 1] 的范围内。其公式如下:
在这里插入图片描述

应用场景

  • 常用于二分类问题的输出层激活函数。

优缺点

  • 优点:输出范围 [0, 1],适合处理概率问题。
  • 缺点:存在梯度消失问题,输出不是零中心化。

示例代码

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 示例输入
logit = 0.5
output = sigmoid(logit)
print(output)  # 输出 0.6224593312018546

记忆技巧

  • Sigmoid 函数有一个 “S” 形曲线,输出范围 [0, 1],适合二分类问题的输出层。

3. Softmax 函数

定义
Softmax 函数将向量的输出转化为概率分布,使得所有输出的和为1。其公式如下:

应用场景

  • 常用于多分类问题的输出层激活函数。

优缺点

  • 优点:将向量转化为概率分布,和为1,适合多分类问题。
  • 缺点:需要更多计算资源。

示例代码

import numpy as np

def softmax(x):
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum(axis=0)

# 示例输入
logits = np.array([1.0, 2.0, 3.0])
output = softmax(logits)
print(output)  # 输出 [0.09003057 0.24472847 0.66524096]

记忆技巧

  • Softmax 将向量转化为概率分布,和为1,适合多分类问题的输出层。

激活函数的顺序使用

在神经网络中,这些激活函数通常按以下顺序使用:

  1. 输入层:无激活函数,仅用于接受输入数据。
  2. 隐藏层:常用 Tanh 或 ReLU(另一种激活函数)进行激活。
  3. 输出层
    • 二分类问题:使用 Sigmoid 进行激活。
    • 多分类问题:使用 Softmax 进行激活。
    • 回归问题:通常无激活函数,或根据具体需求选择合适的激活函数。

结论

理解和记住 Tanh、Sigmoid 和 Softmax 函数的特性、应用场景和优缺点,可以帮助我们在构建和调试深度学习模型时做出更明智的选择。希望这些记忆技巧和示例代码能够帮助您更好地掌握这些激活函数。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.0 Python 数字类型常用操作

文章目录 1. Numbers数字型1.1 int整型1.2 float浮点型1. 浮点型2. 尾数问题3. 溢出问题4. 高精度计算模块5. 无穷大 1.3 complex复数1.4 bool布尔值 2. 运算符2.1 算术运算符2.2 增值运算符 3. 类型转换3.1 转换为整型3.2 转为浮点型 4. 进制转换4.1 十进制转二进制4.2 十进制…

腾讯云EdgeOne对比普通CDN的分别

EdgeOne架构图 普通CDN架构图 ​​​​​​​ 腾讯云EdgeOne对比普通CDN的不同点 服务范围和集成度 腾讯云EdgeOne是一体化的综合平台,不仅提供内容分发功能,还包括安全防护、性能优化和边缘计算等服务。EdgeOne提供了DDoS防护、WAF(Web应…

洛谷B3642 二叉树的遍历(前序、中序、后序)

题目描述 有一个 𝑛(𝑛≤10^6) 个结点的二叉树。给出每个结点的两个子结点编号(均不超过 𝑛),建立一棵二叉树(根节点的编号为 1),如果是叶子结点,则输入 0。…

Golang的channel

目录 基本使用 channel 数据结构 阻塞的协程队列 协程节点 构建 channel 写流程 读流程 非阻塞与阻塞 closechan(关闭) 基本使用 创建无缓存 channel c : make(chan int) //创建无缓冲的通道 cc : make(chan int,0) //创建无缓冲的通道 c 创建有缓存 channel c : m…

(三十九)Vue之集中式的状态管理机制Vuex

目录 概念vuex的核心概念State(状态)Getters(获取器)Mutations(突变)Actions(动作) 搭建vuex环境基本使用getters的使用 上一篇:(三十八)Vue之插槽…

JDK8新特性【接口新特征、lambda语法、Supplier、Consumer、Function、Predicate】

目录 一、关于接口的新特性1.1 jdk1.8之前的接口重要特性1.2 JDK8以后代码演示 1.3 总结通过代码演示发现作用 二、Lambda表达式[重点]2.1 将匿名内部类写法改写为lambda写法2.2 语法特点能够写成lambda形式的的前提语法特征代码演示深入理解lambda 2.3 总结 三、函数式接口3.1…

社区疫情管理系统

社区疫情管理系统 java web源码 增删改查 适合新手有导入视频 java项目 ssm疫情防控登记管理社区疫情管理源码jsp项目 技术 ssm 源码➕数据库文件➕eclipse导入视频

基于C#开发web网页管理系统模板流程-打包发布

点击返回目录-> 基于C#开发web网页管理系统模板流程-总集篇-CSDN博客 前言 本系列中,作为开发者我们通过ASP.net Web模板设计网页,网页的任何设计、源代码都是直接可见的,在实际应用开发中,显然这些都是商业、公司机密 通过打包…

Vue基础知识:异步DOM更新是什么?$nextTick是什么?到底应该如何使用。什么是同步?什么是异步?

要先了解异步dom更新是什么就必须先了解,什么是同步?什么是异步? 1.什么是同步?什么是异步? 同步(Synchronous): 同步操作是按照代码的顺序执行的,每个操作都必须等待上…

SAP OB52 财务账期月结月底月初开关

公告:周一至周五每日一更,周六日存稿,请您点“关注”和“在看”,后续推送的时候不至于看不到每日更新内容,感谢。 这是一条刮刮乐,按住全部选中:点关注的人最帅最美,欢迎&#xff1…

vue2+echarts:echarts在dialog弹框中不显示的解决方案

重点是open方法里使用$nextTick拿到最新的dom&#xff0c;在里面加载echarts //html <el-button click.stop"getIfStorage"></el-button><el-dialog title"图表数据" :visible.sync"ifStorageShowOpen" open"open()" …

嵌入式系统中判断大小端的方法与实现

第一&#xff1a;大小端基本分析 程序判断计算机是大端的还是小端的&#xff0c;判断的思路是确定一个多字节的值(下面使用的是4字节的整数)&#xff0c;将其写入内存(即赋值给一个变量)&#xff0c;然后用指针取其首地址所对应的字节(即低地址的一个字节)&#xff0c;判断该字…

Photoshop中颜色与色调的调整

Photoshop中颜色与色调的调整 Photoshop中的颜色模式RGB模式灰度模式位图模式索引模式CMYK模式Lab模式 Photoshop中的颜色/色调调整命令颜色/色调调整命令的分类亮度/对比度调整命令色阶命令曲线命令曝光度命令自然饱和度命令色相/饱和度命令色彩平衡命令照片滤镜调整命令通道混…

[leetcode]swap-nodes-in-pairs

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode* dummyHead new ListNode(0);dummyHead->next head;ListNode* temp dummyHead;while (temp->next ! nullptr && temp->next->next !…

单链表实现:从理论到代码

✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱博客 所属栏目&#xff1a;C语言&#xff0c;数据结构 ​ 前言 前面学习了顺序表&#xff0c;顺序表优点&#xff1a; 可以随机访问元素&#xff0c;通过索引能快速定位到元素。存储密…

Python界面编辑器Tkinter布局助手 使用体验

一、发现 我今天在网上搜关于Python Tkinter方面的信息时&#xff0c;发现了Python界面编辑器 Tkinter布局助手 的使用说明。 https://blog.csdn.net/weixin_52777652/article/details/135291731?spm1001.2014.3001.5506 这个编辑器是个开源的项目&#xff0c;个人用户可以…

Python学习笔记7:入门知识(七)

前言 之前说过我更换了新的学习路线&#xff0c;现在是根据官方文档和书籍Python crash course来进行学习的&#xff0c;在目前的学习中&#xff0c;对于之前的知识有一些遗漏&#xff0c;这里进行补充。 学习资料有两个&#xff0c;书籍中文版PDF&#xff0c;关注我私信发送…

Lua实现自定义函数面向对象编程

本文目录 1、引言2、原理3、实例4、层析验证 文章对应视频教程&#xff1a; 暂无&#xff0c;可以关注我的B站账号等待更新。 点击图片或链接访问我的B站主页~~~ 1、引言 在现代软件开发中&#xff0c;面向对象编程&#xff08;OOP&#xff09;已经成为一种广泛使用的编程范式…

nodejs 某音douyin网页端搜索接口及x_bogus、a_bogus(包含完整源码)(2024-06-13)

前言 x_bogus或a_bogus算法大概是对数据、ua、时间戳、浏览器的几个指纹进行计算&#xff0c;拿到一个110位大数组&#xff0c;然后转字符&#xff0c;在头部再添加十二位随机字符&#xff0c;再进行魔改的base64加密。 问&#xff1a;抖音的x_bogus、a_bogus值有什么用&#x…

幸狐RV1106开发板烧录Ubuntu系统与配置SDK,RV1106 LuckFox Pico Max——最新的操作

资料&#xff1a;上手教程 | LUCKFOX WIKI 以及SDK内的文档资料 开发板型号&#xff1a;RV1106 LuckFox Pico Max 烧录系统&#xff1a; Ubuntu 虚拟机系统&#xff1a;Ubuntu 20.04&&Ubuntu22.04 PC系统&#xff1a;win11 占用空间&#xff1a;大概15G 本文主要记…