LeakyReLU激活函数

news2024/11/24 21:02:22

nn.LeakyReLU 是PyTorch中的Leaky Rectified Linear Unit(ReLU)激活函数的实现。Leaky ReLU是一种修正线性单元,它在非负数部分保持线性,而在负数部分引入一个小的斜率(通常是一个小的正数),以防止梯度消失问题。这种激活函数的数学表达式如下:
在这里插入图片描述
negative_slope:x为负数时的需要的一个系数,控制负斜率的角度。默认值:1e-2(0.01)

在这里插入图片描述

本文主要包括以下内容:

  • 1.nn.LeakyReLU的函数构成
  • 2.nn.LeakyReLU的常见用法
  • 3.LeakyReLU函数图像实现

1.nn.LeakyReLU的函数构成

nn.LeakyReLU 是PyTorch中的Leaky Rectified Linear Unit(ReLU)激活函数的实现,它是torch.nn.Module的子类。下面是 nn.LeakyReLU 类的主要构成部分和参数:

class nn.LeakyReLU(negative_slope=0.01, inplace=False)

构造函数参数:

  • negative_slope(默认为0.01):这是Leaky ReLU激活函数的负斜率,即在输入值为负数时的斜率。它是一个浮点数,通常设置为一个小的正数,以控制在负数区域的线性部分的斜率。较小的值会导致更线性的行为,较大的值会导致更接近传统ReLU的行为。
  • inplace(默认为False):如果设置为True,则会在原地修改输入张量,否则将创建一个新的张量作为输出。原地操作可以节省内存,但可能会改变输入张量的值。

nn.LeakyReLU 在前向传播时将输入张量中的负值部分乘以 negative_slope,从而实现Leaky ReLU激活函数的效果。它通常用于深度神经网络中,以缓解梯度消失问题,并引入非线性变换。

在PyTorch中,我们可以使用nn.LeakyReLU类来创建Leaky ReLU激活函数,并可以通过参数来设置斜率。

2.nn.LeakyReLU的常见用法

以下是使用nn.LeakyReLU的一些常见用法:

  1. 创建Leaky ReLU激活函数层:
import torch.nn as nn

# 创建一个Leaky ReLU激活函数层,斜率为0.2(可以根据需要进行调整)
leaky_relu = nn.LeakyReLU(0.2)
  1. 对张量应用Leaky ReLU激活函数:
import torch

# 创建一个示例输入张量
input_tensor = torch.tensor([-1.0, 2.0, -3.0, 4.0, -5.0])

# 应用Leaky ReLU激活函数
output_tensor = leaky_relu(input_tensor)

在上面的示例中,output_tensor将包含应用Leaky ReLU激活函数后的结果,其中负数部分被乘以了斜率0.2。

使用Leaky ReLU激活函数的一个主要优势是它可以缓解梯度消失问题,特别是在深度神经网络中。我们可以根据实际问题和实验结果来调整斜率的值,以获得最佳性能。

下面是使用示例:

import torch
import torch.nn as nn

# 创建LeakyReLU激活函数层,默认的negative_slope是0.01
leaky_relu = nn.LeakyReLU()

# 示例输入张量
input_tensor = torch.tensor([-1.0, 2.0, -3.0, 4.0, -5.0])

# 应用Leaky ReLU激活函数
output_tensor = leaky_relu(input_tensor)

print(output_tensor)
#输出结果
#tensor([-0.0100,  2.0000, -0.0300,  4.0000, -0.0500])

这将输出一个张量,其中负数部分被乘以了默认的 negative_slope 值0.01。

3.LeakyReLU函数图像实现

Leaky ReLU(Leaky Rectified Linear Unit)激活函数在非负数部分保持线性,而在负数部分引入一个小的斜率(负斜率)。这个斜率通常是一个小的正数,例如0.01。下面是Leaky ReLU函数的图像示例,其中斜率设置为0.01:

import numpy as np
import matplotlib.pyplot as plt

# 定义Leaky ReLU函数
def leaky_relu(x, negative_slope=0.01):
    return np.where(x >= 0, x, negative_slope * x)

# 生成输入值范围
x = np.linspace(-5, 5, 100)

# 计算Leaky ReLU的输出
y = leaky_relu(x, negative_slope=0.01)

# 绘制Leaky ReLU函数的图像
plt.plot(x, y, label='Leaky ReLU (0.01)', color='b')
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Leaky ReLU Activation Function')
plt.axhline(0, color='black', linewidth=0.5, linestyle='--')
plt.axvline(0, color='black', linewidth=0.5, linestyle='--')
plt.legend()
plt.grid(True)
plt.show()

运行此段代码,即可得到LeakyReLU函数图像
在这里插入图片描述

上述代码生成了Leaky ReLU激活函数的图像,其中斜率设置为0.01。在图像中,我们可以看到,在负数区域,函数引入了一个小的负斜率,而在非负数区域,函数保持线性,值等于输入值。这是Leaky ReLU激活函数的基本特点,它允许一些负数值通过,并且对于大部分正数值保持线性。

我们可以通过更改negative_slope参数的值来调整Leaky ReLU函数的斜率,以满足不同需求。不同的斜率值会产生不同的非线性行为。

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

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

相关文章

JVM(八股文)

目录 一、JVM简介 二、JVM中的内存区域划分 三、JVM加载 1.类加载 1.1 加载 1.2 验证 1.3 准备 1.4 解析 1.5 初始 1.6 总结 2.双亲委派模型 四、JVM 垃圾回收(GC) 1.确认垃圾 1.1 引用计数 1.2 可达性分析(Java 采用的方案&a…

BI系统有哪些?新手怎么选?

从本土化服务以及契合中国企业使用习惯等方面来看,建议采用国产BI系统。国内比较知名的BI工具有很多,比如亿信华辰BI(亿信ABI)、思迈特BI(Smartbi)、奥威BI(OurwayBISpeedBI)、帆软BI(FineBI)等。 这些BI系统在操作上都比较简单,比如像奥威B…

Vue中...(扩展运算符)的作用

对数组和对象而言,就是将运算符后面的变量里东西每一项拆下来。 (一)操作数组 // 1.把数组中的元素孤立起来 let iArray [1, 2, 3]; console.log(...iArray); // 打印结果 1 2 3// 2.在数组中添加元素 let iArray [1, 2, 3]; console.log…

拉取公司前端项目本地运行结果Bug频出,看我是如何一步一步成功解决的

文章目录 前端项目运行Bug记录问题背景npm install 报错问题1:npm install 报错ERESOLVE could not resolve问题2:npm install 报错 Cannot read properties of null问题3:node安装了npm没安装问题4:npm和node不兼容问题5&#xf…

新文件覆盖旧文件还能复原吗,3个方法快速恢复覆盖文件!

iPhone在解压压缩文件时,不小心将同名文件进行了覆盖,怎么撤回? 在使用U盘转移文档时,意外将同名文档进行了替换,怎么恢复? 当误将重名文件进行了替换,如何找回这些被覆盖的旧文件?…

Vue中的数据绑定

一、v-bind单向数据绑定 单向数据绑定中,数据只能由data流向页面。 v-bind:属性名"data变量" 或简写为 :属性名"data变量" 我们修改data中的iptvalue值,页面input框中的value值改变。 而我们修改input框中的value值&#xff0…

【C++初阶(二)C——C++过渡必看】

文章目录 前言一、C关键字🍎二、命名空间🍅1.命名空间的定义🍒2.命名空间使用🍓 三、C输入&输出🍑四、缺省参数🫑1. 缺省参数概念🍉2. 缺省参数分类🥝 五、函数重载&#x1f965…

【Vue面试题五】说说你对Vue生命周期的理解?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:请描述下你对vue生命周期…

八、互联网技术——物联网

文章目录 一、智慧物联案例分析二、M2M技术三、数据保护综合案例分析一、智慧物联案例分析 智能物流是一种典型的物联网应用。一个物流仓储管理系统架构如下图所示: [问题1] 图中的三层功能:仓库物品识别、网络接入、物流管理中心,分别可对应到物联网基本架构中的哪一层? …

金九银十,刷完这个笔记,17K不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…

MybatisPlus01

MybatisPlus01 1.MybatisPlus初体验 1.1首先要引入MybatisPlus的依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency>1.2定义Mapp…

【论文极速读】EMT——评估多模态LLM中的灾难性遗忘问题

【论文极速读】EMT——评估多模态LLM中的灾难性遗忘问题 FesianXu 20231001 at Baidu Search Team 前言 论文[1]报告了多模态LLM中遇到的灾难性遗忘问题&#xff0c;并且提出了一种评估其程度的方法EMT&#xff0c;本文简要介绍&#xff0c;希望对读者有所帮助。如有谬误请见谅…

criu简单例子

CRIU&#xff08;Checkpoint/Restore In Userspace&#xff09;是运行在linux操作系统上的一个开源软件&#xff0c;其功能是在用户空间实现Checkpoint/Restore功能。 github地址如下&#xff1a;https://github.com/checkpoint-restore/criu 本人选取的版本是3.12&#xff0…

使用V-Ray for SketchUp 进行室外场景操作流程!

使用V-Ray for SketchUp 渲染时&#xff0c;可让大家轻松创建出色的渲染效果。如何使用V-Ray for SketchUp 进行室外场景操作呢&#xff1f; 对于一些新手朋友&#xff0c;可能是不知所措的&#xff0c;今天小编通过一个室外场景案例流程来给大家展示看看。 1、设置场景 可视化…

FPGA设计时序约束三、设置时钟组set_clock_groups

目录 一、背景 二、时钟间关系 2.1 时钟关系分类 2.2 时钟关系查看 三、异步时钟组 3.1 优先级 3.2 使用格式 3.3 asynchronous和exclusive 3.4 结果示例 四、参考资料 一、背景 Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径&#xff0c;除非时序约束…

Android子线程可以更新UI

目录 1 传统更新UI的七种方式1.1 new Handler()1.2 new Handler.Callback()1.3 new Handler().post(Runnable r)1.4 new Handler().postDelayed(Runnable r, long delayMillis)1.5 Activity.runOnUiThread(Runnable action)1.6 View.post(Runnable action)1.7 View.postDelayed…

科普丨如何让语言芯片保持稳定性能

一、勿长期高磁接触 虽然高质量的语音芯片的高声量范围相对较大&#xff0c;但是智能语音芯片一般分为不同情况使用&#xff0c;首先是内外不能混用&#xff0c;不仅如此在室内使用时也要防止长期的高磁接触&#xff0c;这样也会使语音芯片寿命折损。 二、定期清尘擦拭 专业…

计算机网络拓扑结构

什么是计算机网络拓扑结构&#xff1f; 计算机网络拓扑结构是指在网络中连接计算机和设备的方式或布局。它决定了如何在网络中传输数据&#xff0c;以及网络中的设备如何相互通信。不同的拓扑结构适用于不同的场景和需求&#xff0c;因此选择正确的拓扑结构对于网络性能和可用…

详解FreeRTOS:FreeRTOS任务恢复过程源码分析(进阶篇—4)

本篇博文讲解FreeRTOS中任务恢复过程的源代码,帮助各位更好理解恢复任务的原理和流程。 在详解FreeRTOS:FreeRTOS任务管理函数(基础篇—11)中,讲述了任务恢复函数有两个vTaskResume()和xTaskResumeFromISR(),一个是用在任务中的,一个是用在中断中的,但是基本的处理过程…

[C]二叉树的实现——喵喵成长记

宝子&#xff0c;你不点个赞吗&#xff1f;不评个论吗&#xff1f;不收个藏吗&#xff1f; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的很重要…