PyTorch 中定义了一个 LeakyReLU 激活函数层

复制代码
nn.LeakyReLU(negative_slope=0.2, inplace=False)

1. 什么是 LeakyReLU?

LeakyReLU 是经典 ReLU 激活函数的改进版。

  • ReLU :对于输入 x,输出 max(0, x),负数直接置为 0。

  • LeakyReLU :对于输入 x,当 x >= 0 时输出 x;当 x < 0 时输出 negative_slope * x(一个很小的斜率),而不是直接变成 0。

2. 参数解释

negative_slope=0.2

  • 控制负数部分的斜率。

  • 这里 0.2 表示当输入为负数时,输出 = 输入 × 0.2。

  • 例如:输入 -5 → 输出 -1;输入 -0.1 → 输出 -0.02。

  • 通常设置为一个小的正数(如 0.01、0.2 等),目的是保留一点负数信息,避免神经元"死亡"。

inplace=False

  • 表示是否在原地修改输入张量。

  • False(默认值):不修改原输入,而是返回一个新的输出张量。

  • True:会直接修改输入张量的值,节省内存,但可能会丢失原始数据(比如需要保留输入用于梯度计算时不能用)。

  • 大多数情况下保持 False 更安全,除非你明确知道可以复用内存。

3. 使用示例

复制代码
import torch
import torch.nn as nn

# 创建一个输入张量,需要梯度以观察反向传播
x = torch.tensor([[-1.0, 2.0, -3.0]], requires_grad=True)
x = x+2
print("原始 x:", x)

# 使用 inplace=False 的 LeakyReLU(默认)
leaky_relu_false = nn.LeakyReLU(negative_slope=0.2, inplace=False)
y = leaky_relu_false(x)
print("\ninplace=False 输出 y:", y)
print("x 本身未改变:", y is x)


# 使用 inplace=True 的 LeakyReLU
leaky_relu_true = nn.LeakyReLU(negative_slope=0.2, inplace=True)
z = leaky_relu_true(x)  # 注意这里传入 x,但 x 会被原地修改
print("\n调用 inplace=True 后返回的 z:", z)
print("原地修改后的 x:", x)  # x 的值已经被改变了
print("z 和 x 是否是同一个对象?", z is x)  # 返回 True,说明 z 就是 x 本身

就是创建一个带泄漏的线性整流单元,负数部分以 0.2 的斜率衰减,且不修改原始输入。它常用于深度学习模型中,作为激活函数来引入非线性,同时缓解 ReLU 的"神经元坏死"问题。

相关推荐
吴佳浩4 小时前
《拆解全球最火 AI 开源项目》第一季 · REA
人工智能
特立独行的猫A6 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
AllData公司负责人8 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
泯泷9 小时前
让 Agent 分清“马上办、等一等、顺手办”
人工智能·llm·agent
鲜于言悠90510 小时前
Claude Fable 5.2 登场,专治复杂推理与长任务
人工智能
大可不必了10 小时前
03 函数定义和调用
开发语言·python
联犀11 小时前
如何工程化降低语音交互AI设备的延迟(小智ai,芙崽这样的ai设备)
人工智能
杉岩数据11 小时前
杉岩数据董事长陈坚:从数据存储到行业智能——杉岩的AI时代战略布局
人工智能
冬奇Lab11 小时前
Loop 工程到底是高深的新技术,还是炒冷饭?用训练一个识别狗的模型讲明白
人工智能
冬奇Lab11 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude