热闻岛
常用网络层:Linear、Conv、RNN、Embedding、Transformer
AI新闻

常用网络层:Linear、Conv、RNN、Embedding、Transformer

2026年6月15日 15:027 阅读
1. 网络层的本质:把一种 Tensor 变成另一种 Tensor PyTorch 的网络层,都是 nn.Module。它们有参数,有 forward,有状态,也能被递归注册到模型里。 但从计算角度看,层只有一句话:输入 Tensor,输出

1. 网络层的本质:把一种 Tensor 变成另一种 Tensor

PyTorch 的网络层,都是 nn.Module。它们有参数,有 forward,有状态,也能被递归注册到模型里。

但从计算角度看,层只有一句话:输入 Tensor,输出新的 Tensor。

区别在于:每一层“看数据”的方式不同。Linear 看最后一维,Conv 看局部窗口,RNN/LSTM 看时间顺序,Embedding 查表,Transformer 做全局注意力。

2. Linear:最朴素,也最常用

Linear 就是全连接层。它不关心图片、文本、时间。它只关心最后一维。

输入最后一维是 in_features,输出最后一维就是 out_features。其它维度保持不变。

layer = nn.Linear(128, 64)
y = layer(x) # x: (..., 128) -> y: (..., 64)

Linear 的 Python 层很薄。初始化时创建两个 Parameter:weight 和 bias。

weight 的形状是 out_features x in_features。forward 时调用 F.linear。

真正重活不在 Linear 类里,而在 functional 和更底层的 ATen 算子里。

# 源码主线(简化)
self.weight = Parameter(torch.empty(out_features, in_features))
self.bias = Parameter(torch.empty(out_features))
forward(x) -> F.linear(x, weight, bias)

抓重点:Linear 不是“压平层”。它只处理最后一维。是否 flatten,要你自己决定。

3. Conv2d:从整张图里抠局部模式

图片有空间结构。相邻像素更相关。Conv2d 就是利用这个特点。

卷积核像一个小窗口,在 H 和 W 两个方向滑动。每次只看一块局部区域。

一组卷积核产生一组输出通道。out_channels 越大,提取的特征种类越多。

conv = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, padding=1)
y = conv(x) # x: (N, 3, H, W) -> y: (N, 32, H, W)

Conv2d 继承自 _ConvNd。初始化时会把 kernel_size、stride、padding、dilation 统一转成二维 tuple。

forward 不直接计算卷积。它进入 _conv_forward,再调用 F.conv2d。

如果 padding_mode 不是 zeros,会先 F.pad,再 conv2d。

# 源码主线(简化)
Conv2d.__init__ -> _pair(kernel_size / stride / padding)
forward(x) -> _conv_forward(x, weight, bias) -> F.conv2d(...)

抓重点:PyTorch 的图像张量默认是 NCHW,不是 NHWC。形状错,卷积一定报错。

4. RNN / LSTM:让模型记住前面发生了什么

序列数据有先后顺序。今天的温度和昨天有关,一个词和前面的词有关。

RNN 的思路很直接:每个时间步都接收当前输入 x_t,同时接收上一步 hidden state。

LSTM 比 RNN 多一个 cell state,并用四个门控制记忆的写入、遗忘和输出。

lstm = nn.LSTM(input_size=128, hidden_size=256, batch_first=True)
y, (h, c) = lstm(x) # x: (batch, seq, feature)

LSTM 继承自 RNNBase。RNNBase 负责参数管理:weight_ih、weight_hh、bias_ih、bias_hh。

LSTM 每层的 input-hidden 权重是 4 * hidden_size,因为它要同时服务四个门。

forward 会检查输入维度,准备 h0/c0,然后把 flat weights 交给底层 RNN 算子。GPU 上会尽量走 cuDNN 快路径。

# 源码主线(简化)
RNNBase.__init__ -> 创建每层每方向的门控权重
LSTM.forward -> 检查 input/hx/cx -> 底层 LSTM 算子

抓重点:batch_first=True 只改变 input/output 的 batch 位置,不改变 h0/c0 的形状规则。

5. Embedding:把离散 ID 变成连续向量

词 ID、用户 ID、商品 ID,本身只是编号。编号之间没有天然大小关系。

Embedding 做的事很简单:维护一张可训练表。输入 ID,取出对应行。

训练时,反向传播会更新这些向量,让相似对象在向量空间里更接近。

emb = nn.Embedding(num_embeddings=50000, embedding_dim=768)
y = emb(token_ids) # token_ids: (batch, seq) -> y: (batch, seq, 768)

Embedding 内部保存一个 weight Parameter,形状是 num_embeddings x embedding_dim。

forward 进入 F.embedding。输入必须是 IntTensor 或 LongTensor,因为它是索引,不是连续特征。

padding_idx 对应的行不参与梯度更新,适合处理补齐 token。

# 源码主线(简化)
self.weight = Parameter(num_embeddings, embedding_dim)
forward(input_ids) -> F.embedding(input_ids, weight, padding_idx, ...)

抓重点:Embedding 不会理解文字。它只学习 ID 到向量的映射。语义来自训练目标。

6. Transformer:让序列里的每个位置互相看见

RNN 是一步一步读。Transformer 是同时看全局。

每个 token 会生成 Q、K、V。Q 用来问,K 用来匹配,V 是被汇总的信息。

Multi-Head Attention 让模型从多个角度关注序列,再用 FeedForward 做逐位置变换。

block = nn.TransformerEncoderLayer(d_model=768, nhead=12, batch_first=True)
y = block(x) # x: (batch, seq, 768)

nn.Transformer 是参考实现。它会组装 TransformerEncoder 和 TransformerDecoder。

EncoderLayer 内部通常包含 self_attn、两个 Linear、Dropout、LayerNorm。

MultiheadAttention 在可能时会使用 scaled_dot_product_attention 的优化实现。

# 源码主线(简化)
Transformer.__init__ -> EncoderLayer / DecoderLayer
EncoderLayer.forward -> self_attn -> Linear -> Dropout -> LayerNorm

抓重点:新项目建议显式写 batch_first=True,别让 seq 和 batch 的位置靠记忆。

7. 五类层怎么选

选层不是追热点。先看输入数据结构。

向量用 Linear,图片用 Conv,离散 ID 先 Embedding,短序列可用 LSTM,长序列和全局依赖优先 Transformer。

8. 从 Module 到底层算子:一条源码主线

上一章讲过 nn.Module。现在把它和具体层连起来。

model(x) 会触发 Module.__call__。__call__ 处理 hook、状态和上下文,然后进入 forward。

forward 再调用 functional API。functional API 再进入 ATen / CUDA / cuDNN 等后端实现。

读源码的顺序

第一步,看 __init__ 保存了什么参数。

第二步,看 forward 调了哪个 functional。

第三步,看 functional 背后对应哪个底层算子。

第四步,再看设备后端:CPU、CUDA、cuDNN、MPS、ROCm。

9. 常见坑:先查 shape,再查源码

绝大多数网络层报错,第一原因都是 shape 不匹配。

写模型时,别靠猜。每经过一个关键层,就打印一次 shape。

def hook(name):
def fn(module, inputs, output):
print(name, output.shape if hasattr(output, 'shape') else type(output))
return fn
model.layer.register_forward_hook(hook('layer'))

工程习惯:复杂模型不要一口气写完。先跑通一层,再堆下一层。

10. 总结

Linear、Conv2d、LSTM、Embedding、Transformer,不是五个孤立 API。它们是一套特征变换语言。

你真正要记住的是它们各自处理什么结构、改变什么形状、源码最终调到哪里。

一句话带走

Linear 改维度,Conv 抓局部,LSTM 记历史,Embedding 查向量,Transformer 建全局关系。

下一章继续:激活函数、归一化、Dropout。层负责表达,训练稳定性靠它们撑住。

相关推荐

激活函数、归一化、Dropout:模型稳定训练的三件套
AI新闻

激活函数、归一化、Dropout:模型稳定训练的三件套

激活函数,让模型有表达力。归一化,让数值分布稳定。Dropout,让模型别死记。 1. 这三件事分别解决什么问题 第一步,线性层负责“算”。它把输入乘权重、加偏置。 第二步,激活函数负责“拐弯”。没有它,再多层线性层也只是更大的线性层。 第

332 分钟前
AI日报:豆包上线任务模式;元宝正式打通ima公开知识库;智谱GLM-5. 2 全量开源
AI新闻

AI日报:豆包上线任务模式;元宝正式打通ima公开知识库;智谱GLM-5. 2 全量开源

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 1、豆包上线“任务模式”:支持多轮搜索与PPT自动化生成 豆包上线“任务模式”,标志着其从单一文本交互工具向具备复杂工作流处理能力的AI Agent演进,支持多轮搜索、深度推理、浏览器自动化操作以及多模态内容

137 分钟前
银行业百万美元年薪争夺首席AI官 IBM调查显示高管设置率一年内激增50%
AI新闻

银行业百万美元年薪争夺首席AI官 IBM调查显示高管设置率一年内激增50%

全球银行业正掀起一场针对首席AI官(CAIO)的高薪争夺战,汇丰控股、澳大利亚联邦银行和劳埃德银行集团的AI领域主管均在过去三个月内密集上任,这一现象正在重塑金融服务业的领航力量。 I BM商业价值研究院对3个国家、21个产业的2000名首席执行官开展的 最新 调查显示,2026年设有首席AI官的组织占比已从2025年的26%急剧飙升至76%。数据研究公司E

138 分钟前
微信支付发布AI接入工具箱2.0:升级双AI专家并支持9国语言
AI新闻

微信支付发布AI接入工具箱2.0:升级双AI专家并支持9国语言

6月15日,微信支付官方正式发布AI接入工具箱2.0。该版本在同年4月上线的初代产品(包含Skill技能包、AI友好文档和AI友好API)基础上,紧密结合商家与开发者的实际反馈,围绕安全、高效、原生流畅三大核心方向完成了五大技术升级,旨在彻底解决超七成商户使用AI辅助编程时对资金安全的担忧,进一步降低开发门槛与资源消耗。 在本次迭代中,工具箱实现了全球化语言

138 分钟前
全渠道销量夺冠!千问AI眼镜引爆智能穿戴新风口
AI新闻

全渠道销量夺冠!千问AI眼镜引爆智能穿戴新风口

在日益激烈的智能穿戴设备竞争中,千问AI眼镜凭借强劲的产品实力脱颖而出。根据 最新 披露的市场销售数据,该品牌在 2026 年 1 至 5 月期间,成功斩获国内AI眼镜品类全渠道销量 第一 的桂冠。这一亮眼成绩不仅印证了千问在市场中的核心竞争力,也展示了新品爆发的巨大潜力。 市占率 独占鳌头 ,新品引爆线上市场 零售监测数据进一步佐证了千问的强势表现,在今年

138 分钟前
Context Engineering:比 Prompt Engineering 更重要的上下文工程
AI新闻

Context Engineering:比 Prompt Engineering 更重要的上下文工程

一、Prompt 只是入口,上下文才是现场 很多人做 AI 应用,第一反应是改 Prompt。 但线上 Agent 出错,往往不是 Prompt 写得不够玄,而是模型看到的上下文不对。 一句话讲透 Context Engineering,就

958 分钟前

阅读补充

一句话看懂

1. 网络层的本质:把一种 Tensor 变成另一种 Tensor PyTorch 的网络层,都是 nn.Module。

事件背景

这篇内容围绕“常用网络层”展开,热闻岛基于公开信息整理事件背景、主要进展与可继续关注的方向。

事件时间线

发布

相关信息进入公开传播

更新

热闻岛对内容进行整理与补充。

看点

  • · 常用网络层的最新进展是什么
  • · 相关信息对用户或行业会带来哪些影响
  • · 后续是否会有新的回应或处理结果

后续关注

  • · 后续官方回应或权威通报
  • · 相关主体的进一步说明
  • · 事件对普通用户和平台传播的持续影响

免责声明:本文仅代表作者观点,不构成投资建议、法律建议、医疗建议。财经类内容尤其需要注意风险;爆料类信息请以权威通报为准。

评论 (0)

登录后即可发表评论

去登录
暂无评论,快来抢沙发