超平实版Pytorch CNN Conv2d

torch.nn.Conv2d

基本参数

in_channels (int)

输入的通道数量。比如一个2D的图片,由R、G、B三个通道的2D数据叠加。

out_channels (int)

输出的通道数量。

kernel_size (int or tuple)

kernel(也就是卷积核,也可以称为filter)的形状

bias (bool, optional)

是否加上一个可学习的bias。 Default: True.

stride (int or tuple)

卷积步长。

注:关于为什么kernel_size和stride可以有int、tuple两种表示方式

如果是int,就是对于高那条边、宽那条边应用一样的值。比如如果你的kernel是int,那就是一个正方形的kernel。

如果是tuple,则第1个值 应用在高那条边 上,第2个值 应用在宽那条边上!

输入输出的形状

输入形状:

( N , C i n , H , W ) (N, C_{in}, H, W) (N,Cin,H,W)

N N N是batch size

C i n C_{in} Cin是输出的通道数量

H H H是2D input的高度

W W W是2D input的宽度

输出形状:

( N , C o u t , H o u t , W o u t ) (N, C_{out}, H_{out}, W_{out}) (N,Cout,Hout,Wout)

公式

公式左边:

N N N是batch size

C o u t C_{out} Cout是输出的通道

(i, j)是索引

所以这里的 o u t ( N i , C o u t j ) out(N_i, {C_{out}}_j) out(Ni,Coutj)指的就是当前batch中第I个数据的第j个通道的情况。

你就理解为,现在开始我们抛开batch不谈,且就看一个通道。

公式右边:

五角星理解为一个操作

k k k是在数数,从0数到 C i n − 1 C_{in-1} Cin−1,也就是循环一遍input中的通道数量而已。

图例

(图片引用自Apply a 2D Convolution Operation in PyTorch

对于每一次kernel的移动:完全对应的位置,数字两两相乘,然后每一对的结果相加,最后加上bias。这里不确定为什么kernel画了三个颜色,我觉得可能只是表示下面计算的顺序是从左到右、从上到下写的。


参考文档

  1. Pytorch Conv2d文档
  2. Apply a 2D Convolution Operation in PyTorch
  3. PyTorch 2D Convolution
相关推荐
leoZ2315 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
To_OC5 小时前
我把《天龙八部》塞进向量数据库后,终于搞懂了 RAG 到底是个啥
人工智能·llm·agent
蜡台5 小时前
AI Agent(智能体)入门基础教程
人工智能
Akir.weiwen6 小时前
Token 层差异:从颜色值到语义状态的三层跃迁
人工智能·设计规范
迷迭香yy6 小时前
集合竞价数据挖掘实战:用Python构建开盘信号识别系统
人工智能·python·数据挖掘
大模型momo6 小时前
Spring AI 实战:多 Agent 协作实战 —— 分工拆解复杂旅游行程任务
人工智能·spring·ai·agent·旅游
小程故事多_807 小时前
从A2C、TRPO、PPO到GRPO,强化学习策略梯度算法完整演进与大模型落地实战解析
人工智能·算法
冬奇Lab7 小时前
开源项目第176期:Better Harness — 不审查 diff,审查工作流本身,给 AI 编程 Agent 的五维评估框架
人工智能·开源·agent
冬奇Lab7 小时前
代码库知识库系列(07):混合检索 BM25 + 向量——Q8 还是失败,而且总分退步了
人工智能
ajassi20007 小时前
AI语音智能体开发日记(十一)为智能设备“声”临其境——详解音频资源自动化生成流程
人工智能·ai·ai编程