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

前文介绍

我们在前面了解到了线性回归模型,其实我们可以把线性回归看成一个单个的神经元,它实际上就完成了两个步骤
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+=1if i>0.5:output[number]=1else: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.mzph.cn/news/233200.shtml

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

相关文章

HarmonyOS4.0从零开始的开发教程18后台代理提醒

HarmonyOS(十六)后台代理提醒 简介 随着生活节奏的加快,我们有时会忘记一些重要的事情或日子,所以提醒功能必不可少。应用可能需要在指定的时刻,向用户发送一些业务提醒通知。例如购物类应用,希望在指定时…

PDF天花板工具 你值得拥有

今天带来的推送是PDF文档阅读器的鼻祖——Adobe 的 Arcobat。 Adobe Acrobat 是由Adobe公司开发的一款PDF(Portable Document Format,便携式文档格式)编辑软件。借助它,您可以以PDF格式制作和保存你的文档 ,以便于浏览…

MATLAB 点云中心化 (40)

MATLAB 点云中心化 一、算法介绍二、算法实现一、算法介绍 使用点云集合中的坐标计算质心,这里将其作为中心,将每个点坐标减去该中心坐标,即可得到中心化的点云,这在很多处理中是必须进行的一个步骤:相当于点云移动到以质心为原点的坐标系 (主要是计算质心和点云偏移两个…

【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题

【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题 1)安装 Maven-Helper 插件2)Maven Helper 插件使用方法3)Idea-Maven 可视化依赖树 1)安装 Maven-Helper 插件 这里我们已经安装过了,如果没有安装过,点…

透视表美化——将透视表个别错误值去掉/取消自动更新表宽

1.问题:做透视表时,有时候有个别值求出来是错误值,但是不雅观需要删掉; 2.解决方案 点击数据透视表分析-选项框,将“对于错误值,显示:”选中,可以不填值或者填需要替代的值&#xf…

面试算法62:实现前缀树

题目 请设计实现一棵前缀树Trie,它有如下操作。 函数insert,在前缀树中添加一个字符串。函数search,查找字符串。如果前缀树中包含该字符串,则返回true;否则返回false。函数startWith,查找字符串前缀。如…

16.仿简道云公式函数实战-钉钉宜搭逻辑函数-加餐

1. 前言 钉钉宜搭中也有公式组件,发现在钉钉宜搭中逻辑函数有EQ、NE、LT、GT、LE、GE.虽然在QLExpress中也有对应的实现,但为了考虑系列文章的完整性,笔者在这篇文章加餐EQ、NE、LT、GT、LE、GE六个函数的实现 2. 函数说明 函数名表达式入参返回值EQ判断相等EQ(value1,val…

展开说说:Android之常用的延时执行策略

总结了以下六种常用的Android延时执行策略,以此记录: 1、TimerTask 2、Handler.postDelayed 3、Handler.sendEnptyMessageDelayeed 4、Thread.sleep线程休眠-需要在子线程 5、使用AlarmManager-全局定时器或者闹钟 6、Wait 首先定义一个时间常量&…

Ubuntu20.04 下编译安装 ffmpeg 和 ffplay

Ubuntu20.04 下编译安装 ffmpeg 和 ffplay 一、下载源码包二、安装依赖库三、编译四、添加环境变量五、验证是否成功六、问题 一、下载源码包 1.1 官方下载链接:http://ffmpeg.org/download.html 最新版本为6.1,点击 Download Source Code下载即可 &…

四、Spring IoC实践和应用(基于XML配置方式组件管理)

本章概要 基于XML配置方式组件管理 实验一: 组件(Bean)信息声明配置(IoC)实验二: 组件(Bean)依赖注入配置(DI)实验三: IoC 容器创建和使用实验四…

Python基础-函数与方法

第六章函数与方法 6.1、公共方法 加法运算适用于所有的基础数据类型(int float bool)加法运算所有两侧要是同种数据类型加法运算再容器类型中是拼接的意思,不是相加计算值 # 法运算,都可以用于哪些数据类型之间 # int float bool 肯定可以…

自助借还办证一体机软件需求说明书

1. 简介 1.1 项目概括 本项目主要实现读者自助办证、借书、还书、查询、续借的功能,减轻管理员的工作量,提升读者的借阅体验,提高了图书的借阅量与流通率,是图书馆智能化、无人化建设的重要步骤。 1.2 项目背景 ​ 目前各大图…

WEB渗透—PHP反序列化(四)

Web渗透—PHP反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩…

使用 React 实现自定义数据展示日历组件

目录 背景实现日历组件父组件数据 效果最后 背景 项目中需要实现一个日历组件,并且需要展示月,日所对应的数据(因为项目需求问题,就不统计年数据总量)。网上找了一堆,基本都不大符合项目需求,且…

OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

一、AMD处理器win10系统下,DevEco Studio模拟器启动失败解决办法。 结论:在BIOS里面将Hyper-V打开,DevEco Studio模拟器可以成功启动。 二、ArkTS自定义组件导出、引用实现。 如果在另外的文件中引用组件,需要使用export关键字导…

3ds max软件中的一些常用功能分享!

3ds max软件有很多小伙伴反馈说,明明有很多3ds max教程资料。却不知道如何入门3dmax。 掌握3dmax基本功能是开始使用3dmax的基础之一,所以,小编带大家盘点一下3dmax常用操作。 3dmax常用功能介绍如下,快快跟着小编一起看起来。 1…

预测性维护在汽车制造行业中的应用

汽车制造行业是一个高度复杂和精细化的领域,依赖于各种设备来完成生产流程。这些设备包括机械装配线、焊接机器人、喷涂设备、传送带等。然而,这些设备在长时间运行中不可避免地会遇到各种故障,给生产进程带来延误和成本增加。为了应对这一挑…

可变参数详解

概述 可变参数用在形参中可以接收多个数据。 可变参数的格式:数据类型...参数名称。 可变参数在方法内部本质上就是一个数组。 可变参数的作用 传输参数非常灵活,方便。可以不传输参数,可以传输1个或者多个,也可以传输一个数…

61道MyBatis高频题整理(附答案背诵版)

1、介绍下MyBatis? MyBatis是一个基于Java的持久层框架,它封装了底层的JDBC操作,大大简化了数据库操作的复杂性。MyBatis的主要特点包括: SQL语句与Java代码的分离:MyBatis允许你直接在XML文件中编写SQL语句,这样可以…

LeetCode Hot100 79.单词搜索

题目: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那…