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 的"神经元坏死"问题。

相关推荐
happylifetree4 小时前
Python70:核心语法-函数进阶-案例2
python
irislinAmelia4 小时前
缺陷检测AI关键点在哪
人工智能·嵌入式硬件·1024程序员节
Ai-_Man4 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
安托智造4 小时前
MBD:从二维图纸到三维模型的制造革命(下)
大数据·人工智能·制造·mbd
火山引擎开发者社区4 小时前
VeOps 深度调查:让 AI 排障从“能用”走向“可靠”
人工智能
梓豪csd4 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
王中阳Go4 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
BK贝壳4 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
武天旭4 小时前
AI安全--AI大模型的隐私保护与法律法规
人工智能·安全
Solange__4 小时前
影视预演怎么用AI生成3D场景?从分镜、Blockout到镜头交付的完整流程
人工智能·游戏·3d·ai·自然语言处理·aigc·游戏策划