理解PyTorch中的nn.Linear层 | AI生成和翻译

Home 2025.11

这是对 nn.Linear 层核心功能的很好总结!您对参数和执行的操作基本正确,但有几个重要细节需要澄清,特别是关于权重、偏置和激活函数的部分。

nn.Linear:核心运算 🔢

PyTorch 中的 nn.Linear 模块对输入数据执行线性变换,其数学表达式为:

\(\)\mathbf{y} = \mathbf{x} \mathbf{W}^T + \mathbf{b}\(\)

该层包含两组可训练参数

  1. 权重矩阵 (\(\mathbf{W}\)):

    • 其尺寸为 \(\mathbf{m \times n}\)(输出维度 × 输入维度)
    • 这就是您提到的参数集,权重总数为 \(m \times n\)
    • 您的操作描述基本正确:每个输出 \(y_i\) 都是所有输入 \(x_j\) 的加权和
  2. 偏置向量 (\(\mathbf{b}\)):

    • 其尺寸为 \(\mathbf{m}\)(输出维度)
    • 每个输出 \(y_i\) 都会加上一个偏置项
    • 参数总数为 \((m \times n) + m\)

初始化与激活函数 💡

1. 初始化:由 nn.Linear 自动处理

当您创建 nn.Linear 层时,权重矩阵 (\(\mathbf{W}\)) 和偏置向量 (\(\mathbf{b}\)) 会自动初始化

2. 激活函数:独立的步骤

您提到将 ReLUSigmoid 传递给 nn.Linear,这是个常见的理解误区:

正确结构示例(顺序模型):

import torch.nn as nn

# 线性层
linear_layer = nn.Linear(input_size, output_size) 

# 激活层是独立的
activation_layer = nn.ReLU() 

# 在前向传播或顺序模型中将它们串联起来:
model = nn.Sequential(
    nn.Linear(input_size, hidden_size),  # 线性变换
    nn.ReLU(),                           # 非线性激活
    nn.Linear(hidden_size, output_size), # 另一个线性变换
    # 可选的最终激活函数,例如用于二分类的 nn.Sigmoid()
)

您想看看如何定义和使用包含 nn.Linear 和激活函数的小型网络的快速代码示例吗?


Back

google/gemini-2.5-flash

Donate