深度学习中常见的激活函数

news2024/11/27 5:23:21

前文介绍

我们在前面了解到了线性回归模型,其实我们可以把线性回归看成一个单个的神经元,它实际上就完成了两个步骤
1.对输入的特征的加权求和
2.将结果通过传递函数(或者激活函数)输出

这里我们提到了传递函数(或者激活函数),我们从线性回归的模型中可以看出,在回归问题上,输出并没有做激活,仅仅是直接输出

单个神将元所完成的任务就是对所有输入的特征乘以权重(w)、加上偏置(b)。例如有3个特征,分别为x1,x2,x3,那么线性回归模型所做的就是对这些输入特征乘以权重(w),加上偏置(b),使用激活函数激活后,然后输出
输出=激活函数(w1*x1+w2*x2+w3*x3+b)

激活函数

激活为了模拟生物大脑中神经元的工作原理,大脑中神经元会对接收到的信号进行考察,如果此信号满足一定条件,神经元才会将信号往下输出,繁殖就不往下传递了。激活函数的作用也类似,激活会为网络带来非线性,使得网络可以拟合非线性问题等更多复杂问题,大大增强了网络的拟合能力。

神经网络的作用有哪些呢

引入非线性关系:神经网络中的每一层都是由线性变换和激活函数组成的,激活函数的非线性特性使得神经网络能够学习和表示更为复杂的函数关系。

解决梯度消失问题:在深度神经网络中,梯度消失问题是一个普遍存在的问题。激活函数的非线性特性可以使得梯度在反向传播时更容易传递,从而缓解梯度消失问题。

去除对称性:在神经网络中,如果所有的神经元都使用相同的激活函数,那么神经网络会出现对称性的问题。而使用不同的激活函数可以打破对称性,使得神经网络可以更好地学习和表示不同的特征。

控制输出范围:有些激活函数可以控制输出的范围,例如sigmoid函数可以将输出限制在0到1之间,tanh函数可以将输出限制在-1到1之间。这些函数可以使得神经网络更加稳定和鲁棒。

模块导入

import torch
import numpy as np
import matplotlib.pyplot as plt
from torch import nn

ReLU激活函数

ReLU也叫修正线性单元,是目前应用最多的一个激活函数,在当前大部分模型中,都是用ReLU函数作为激活函数,其公式如下

f(x)=max(x,0)

ReLU激活函数的特点是,如果输入是大于0的,将其往后传递,反之则输出0,ReLU激活函数在实际应用中几乎是当前最受欢迎的激活函数,它是大多数神经网络的默认选择,在PyTorch中有内置的torch.relu()方法用来实现ReLU激活。

input=torch.randn(2)  # 生成随机数input
print(input)
output=torch.relu(input) #对输入激活得到输出
print(output)

绘图展示
x = np.linspace(-5, 5, 100)
y = np.maximum(0, x)

plt.plot(x, y)
plt.title('ReLU Activation Function')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.show()

Sigmoid激活函数

sigmoid函数的输出可以认为是一个是或者否的概率值,常用来解决二分类问题

input=torch.randn(2)
print(input)
output=torch.sigmoid(input)
print(output)
number=-1
for i in output:
    number+=1
    if i>0.5:
        output[number]=1
    else:
        output[number]=0        
print(output)
绘图展示
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

x = np.linspace(-5, 5, 100)
y = sigmoid(x)

plt.plot(x, y)
plt.title('Sigmoid Activation Function')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.show()

Tanh函数

其中心位置是0,其输出为(-1,1)。Tanh激活函数的一个常见的使用场景是对生成模型的输出做激活,从而使得输出规范为(-1,1)。PyTorch的内置函数torch.tanh()用来实现双曲正切激活函数

绘图展示
input=np.linspace(-6, 6,100)
input_tensor=torch.from_numpy(input)
output=torch.tanh(input_tensor)
output_numpy=output.numpy()
plt.plot(input,output_numpy)
plt.title('Tanh')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()

LeakyReLU激活函数

input=np.linspace(-6,6,100)
input_tensor=torch.tensor(input)
m=nn.LeakyReLU(0) # 初始化LeakyReLU,参数表示负轴部分的斜率
output=m(input_tensor)
output_numpy=output.numpy()

plt.plot(input,output_numpy)
plt.title('LeakyReLU')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()

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

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

相关文章

ESP32 核心转储闪存配置已损坏

问题描述:使用Platform 开发ESP32-S3 报错通过串口打印报错提示为核心闪存损失具体报错如下。 ELF file SHA256: 25c739c3d81d8f15 E (183) esp_core_dump_flash: Core dump flash config is corrupted! CRC0x7bd5c66f instead of 0x0 Rebooting... ESP-ROM:esp32s3…

如何去“面试”软件测试工程师?

站在用人单位的角度问这个问题,但是相信很多人搜到这个问题,目的是为了知道如何准备面试,以便拿到软件测试工程师的Offfer(所以我会更多站在求职者的角度去解答这个问题)。 但我们要清楚,找工作是出卖服务…

可能是全网最详细的线性回归原理讲解!!!

ps:此处的特征向量有别于线性代数中的特征向量,准确来讲这里的特征向量是一个样本的所有属性值。 用梯度下降慢慢逼近这个最小值点 本文图片来源于可能是全网最详细的线性回归原理讲解!!!_哔哩哔哩_bilibili 可以结合…

汽车火花塞行业分析:全球市场需求量约为26.3亿个

在汽车日常保养里,更换火花塞算是比较常见的一种,爱车懂车的车主们都非常清楚火花塞对于汽车的重要性,可以说火花塞直接影响到发动机的运作,决定了汽车能否顺利启程。 火花塞(sparkplug),俗称火咀,它的作用是把高压导线(火嘴线)送来的脉冲高压电放电&…

使用kali进行抓包以及aircrack-ng跑包和hashcat跑包

文章目录 一、连接无线网卡二、抓取TCP握手包三、aircrack-ng跑包和hashcat跑包1.aircrack2.Hashcat 四、其他 环境: VMware Workstation 16 Pro kali-linux-2023.1 64位 python3.9.13 RT3070-USB无线网卡 一、连接无线网卡 1.首先按下winr打开运行窗口 2.输入…

Nginx-nginx-1.18.0编译时默认包含哪些模块?nginx-1.18.0有哪些模块和配置语句,各有什么作用?

自己写的与Nginx有关的几篇重量级博文 详情请参见链接 https://blog.csdn.net/wenhao_ir/article/details/135023881 目录 01-如何查看 Nginx-nginx-1.18.0编译时默认包含哪些模块?02-如何查看Nginx有哪些自己可以手动设置添加或不添加的模块03-各配置语句和模块功能…

mybatis.interceptor.exception.SqLValidateException:Ilegal SQL::......

现象:⬇️ 描述:执行 SQL 没问题,应用代码报错 ⬇️ .mybatis.interceptor.exception.SqLValidateException:Ilegal SQL::SELECT voucherNo FROM voucher ORDER BY CAST(SUBSTRING(voucherNo FROM LOCATE(_, voucherNo) 1) AS U…

M2芯片的Mac上安装Linux虚拟机——提前帮你踩坑 ➕ 安装ubuntu虚拟机图形化 ➕ 解决MacOs主机和WmwareFusion/UTM 之间不能复制粘贴问题

M2芯片的Mac上安装Linux虚拟机——提前帮你踩坑 ➕ 安装ubuntu虚拟机图形化 ➕ 解决MacOs主机和WmwareFusion/UTM 之间不能复制粘贴问题 1. 前言1.1 系统说明1.2 Linux系统选择——提前避坑1.3 下载vmware_fusion1.3.1 官网下载1.3.2 注册 CAPTCHA验证码问题1.3.3 产品说明 1.…

【零基础入门Python】制作的简单计算器程序

✍面向读者:所有人 ✍所属专栏:零基础入门Pythonhttps://blog.csdn.net/arthas777/category_12455877.html 制作简单计算器的Python程序 制作GUI计算器的Python程序 时间复杂性: 空间复杂性: 在这里,我们将制作一个…

2024年手把手教CleanMyMac X v4.14.6破解版安装激活图文教程

小编给您带来CleanMyMac X v4.14.6中文破解版,CleanMyMac X破解版是应用在MacOS上的一款Mac系统清理优化工具,使用cleanmymac x 中文破解版只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉,节省宝贵的磁盘空间。 CleanMyMac…

【C语言】cache和程序访问的局部性对程序性能的影响

文章目录 1.源程序比较其性能影响2.内存分配(1)静态存储区(static):(2)栈区(stack):(3)堆区(heap&…

如何做搜索?如何做搜索优化?如何在搜索领域快速成长?

三年多的搜索研发经历,万亿级集群管理经历,集群优化搜索优化经历。将生产环境的集群,检索性能提升了数十倍。也遇到过大大小小的生产事故。在工作中有幸能够得到前谷歌中国首席架构陈老师的指导。在搜索方面,自己也积累了蛮多的经…

大模型专业术语语料如何采集!XPath高级技巧助力狩猎

最近采集大模型的某领域的专业术语语料&#xff0c;却发现一些网站的专业术语和名称解释深藏在一个 <div> 节点下的多个同级 <p> 节点中。这样的结构让爬虫在使用 .//text() 后获取文本时变得十分头疼&#xff0c;难以准确区分是术语还是解释。&#x1f613;。 不…

Backtrader 文档学习-Platform Concepts

Backtrader 文档学习-Platform Concepts 1.开始之前 导入backtrader &#xff0c;以及backtrader 的指示器、数据反馈的模块 。 import backtrader as bt import backtrader.indicators as btind import backtrader.feeds as btfeeds看看btind模块下有什么方法和属性&#x…

redis之五种基本数据类型

redis存储任何类型的数据都是以key-value形式保存&#xff0c;并且所有的key都是字符串&#xff0c;所以讨论基础数据结构都是基于value的数据类型 常见的5种数据类型是&#xff1a;String、List、Set、Zset、Hash 一) 字符串(String) String是redis最基本的类型&#xff0c;v…

Let‘s EasyV|年度作品征集:让数字孪生 看见设计的力量

转眼2023 已然迎来岁末&#xff0c;在这一年以来&#xff0c;关于「数字孪生」、关于「可视化」在遇到各类挑战的同时也在持续进化。在 2023 年&#xff0c;有越来越多人了解并投身于数字孪生可视化相关行业中来&#xff0c;持续制作打磨出更多更精彩的设计作品&#xff0c;并真…

ELF文件结构

ELF文件结构 前文结尾说到编译器编译源代码后生成的文件叫做目标文件&#xff0c;而目标文件经过编译器链接之后得到的就是可执行文件。那么目标文件到底是什么&#xff1f;它和可执行文件又有什么区别&#xff1f;链接到底又做了什么呢&#xff1f;接下来&#xff0c;我们将探…

产品调研——AI平台

本文主要记录了对腾讯云-TIONE平台、华为云-ModelArt等主流AI平台的产品调研。 交互式建模 简单点说就是提供了带训练资源的云IDE&#xff0c;使用形态包括Notebook、VsCode等。 腾讯云-TI平台 TI平台将tensorflow、pytorch、spark环境等均集成到一个Notebook容器中&#xf…

探索“超级服务器” TON:SDK 应用与开发入门

TON 是一个由多个组件构成的去中心化和开放的互联网平台&#xff0c;聚焦于实现广泛的跨链互操作性&#xff0c;同时在高可扩展性的安全框架中运作。TON 区块链被设计为分布式超级计算机或“超级服务器&#xff08;superserver&#xff09;”&#xff0c;旨在提供各种产品和服务…

分布式事务--TC服务的高可用和异地容灾

1.模拟异地容灾的TC集群 计划启动两台seata的tc服务节点&#xff1a; 节点名称ip地址端口号集群名称seata127.0.0.18091SHseata2127.0.0.18092HZ 之前我们已经启动了一台seata服务&#xff0c;端口是8091&#xff0c;集群名为SH。 现在&#xff0c;将seata目录复制一份&…