郭震 AI公众号:郭震AI

12 Pytorch小白从零学教程:神经网络基础之激活函数的使用

发布日期:

最近更新:

分类: Pytorch小白

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点7 个
图文要点6 张
正文规模1.7k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 7 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

激活函数的使用流程图查看大图
激活函数的使用流程图

激活函数让网络不只是线性叠加。不同任务会用不同激活:隐藏层常用 ReLU,二分类常见 Sigmoid,多分类常见 Softmax 或直接交给交叉熵处理。

激活函数的使用核对图查看大图
激活函数的使用核对图

我会区分训练时的输出和展示给用户的概率。很多损失函数要求原始 logits,不要提前手动 softmax。

在前面的教程中,我们学习了如何定义一个神经网络模型。理解神经网络的运作不仅仅依赖于模型的结构,还离不开激活函数的使用。激活函数为神经元的输出添加非线性因素,是使得神经网络能够学习复杂的特征和模式的关键部分。在本篇中,我们将详细探讨常见的激活函数及其在PyTorch中的使用方法。

什么是激活函数?

激活函数定义了神经元的输出。对于任意输入xx,神经元的输出yy可以表示为:

PyTorch激活函数判断卡查看大图
PyTorch激活函数判断卡

使用 PyTorch 激活函数时,先看输出范围、梯度变化、饱和问题、层位置和任务类型。

y=f(wx+b)y = f(wx + b)

这里,ww是权重,bb是偏置,ff是激活函数。激活函数的选择直接影响到模型的性能。常见的激活函数包括:

  1. Sigmoid
  2. Tanh
  3. ReLU(Rectified Linear Unit)
  4. Leaky ReLU
  5. Softmax

接下来,我们将逐一介绍这些激活函数,并在PyTorch中演示它们的使用。

1. Sigmoid 函数

Sigmoid函数的公式如下:

f(x)=11+exf(x) = \frac{1}{1 + e^{-x}}

Sigmoid函数的输出范围是(0,1)(0, 1),非常适合用于二分类问题的输出层。

PyTorch示例:

import torch
import torch.nn as nn

# 定义Sigmoid激活函数
sigmoid = nn.Sigmoid()

# 测试输入
input_tensor = torch.tensor([-1.0, 0.0, 1.0])
output_tensor = sigmoid(input_tensor)

print(output_tensor)  # 输出各个值的Sigmoid结果

2. Tanh 函数

tanh函数可表示为:

f(x)=exexex+exf(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}

Tanh函数的输出范围是(1,1)(-1, 1)。与Sigmoid不同,Tanh在零附近有更强的非线性,通常能带来更好的收敛效果。

PyTorch示例:

# 定义Tanh激活函数
tanh = nn.Tanh()

# 测试输入
input_tensor = torch.tensor([-1.0, 0.0, 1.0])
output_tensor = tanh(input_tensor)

print(output_tensor)  # 输出各个值的Tanh结果

3. ReLU 函数

ReLU(Rectified Linear Unit)是最常用的激活函数,公式为:

f(x)=max(0,x)f(x) = \max(0, x)

它在正数区间内是线性的,并且能有效缓解梯度消失问题。ReLU的输出为[0,+)[0, +\infty)

PyTorch示例:

# 定义ReLU激活函数
relu = nn.ReLU()

# 测试输入
input_tensor = torch.tensor([-1.0, 0.0, 1.0])
output_tensor = relu(input_tensor)

print(output_tensor)  # 输出ReLU结果

4. Leaky ReLU 函数

Leaky ReLUReLU的一种变种,解决了ReLU的“神经元死亡”问题。它的定义为:

f(x)={x如果 x>0αx如果 x0f(x) = \begin{cases} x & \text{如果 } x > 0 \\ \alpha x & \text{如果 } x \leq 0 \end{cases}

其中α\alpha是一个小的常数。

PyTorch示例:

# 定义Leaky ReLU激活函数
leaky_relu = nn.LeakyReLU(negative_slope=0.01)

# 测试输入
input_tensor = torch.tensor([-1.0, 0.0, 1.0])
output_tensor = leaky_relu(input_tensor)

print(output_tensor)  # 输出Leaky ReLU结果

5. Softmax 函数

Softmax函数常用于多分类问题,它将模型的输出转换为概率分布,公式如下:

f(xi)=exijexjf(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}

Softmax的输出范围是(0,1)(0, 1),并且所有输出的和等于1。

PyTorch示例:

# 定义Softmax激活函数
softmax = nn.Softmax(dim=0)

# 测试输入
input_tensor = torch.tensor([1.0, 2.0, 3.0])
output_tensor = softmax(input_tensor)

print(output_tensor)  # 输出Softmax结果
Pytorch小白从零学教程:神经网络基础之激活函数的使用应用复盘卡查看大图
Pytorch小白从零学教程:神经网络基础之激活函数的使用应用复盘卡

读到这里,可以把《Pytorch小白从零学教程:神经网络基础之激活函数的使用》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

Pytorch小白从零学教程:神经网络基础之激活函数的使用应用检查卡查看大图
Pytorch小白从零学教程:神经网络基础之激活函数的使用应用检查卡

读完《Pytorch小白从零学教程:神经网络基础之激活函数的使用》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

小结

在本节中,我们重点探讨了各种激活函数的定义及其在PyTorch中的实现。激活函数是神经网络中至关重要的一环,通过引入非线性,使得模型能够拟合复杂的数据分布。理解不同激活函数的特性可以帮助我们选择合适的激活函数以实现更好的模型性能。

PyTorch阅读地图卡查看大图
PyTorch阅读地图卡

读完《Pytorch小白从零学教程:神经网络基础之激活函数的使用》后,可以回头问三件事:它解决什么问题,哪一步最容易出错,自己能否拿一个小例子跑通。

在下一篇教程中,我们将学习如何定义损失函数,进一步提升我们对神经网络训练过程的理解。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

Pytorch小白从零学教程:神经网络基础之激活函数的使用适合谁读?

这是 PyTorch 入门 系列第 12 / 20 篇,适合正在学习PyTorch 入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇PyTorch 入门教程要多久?

按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...