超平实版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
相关推荐
天涯海风2 小时前
检索增强生成(RAG) 缓存增强生成(CAG) 生成中检索(RICHES) 知识库增强语言模型(KBLAM)
人工智能·缓存·语言模型
lxmyzzs3 小时前
基于深度学习CenterPoint的3D目标检测部署实战
人工智能·深度学习·目标检测·自动驾驶·ros·激光雷达·3d目标检测
跟着珅聪学java4 小时前
Apache OpenNLP简介
人工智能·知识图谱
AwhiteV4 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
Black_Rock_br5 小时前
AI on Mac, Your Way!全本地化智能代理,隐私与性能兼得
人工智能·macos
☺����5 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码2
开发语言·人工智能·python·音视频
fsnine5 小时前
机器学习——数据清洗
人工智能·机器学习
小猿姐6 小时前
KubeBlocks AI:AI时代的云原生数据库运维探索
数据库·人工智能·云原生·kubeblocks
算法_小学生6 小时前
循环神经网络(RNN, Recurrent Neural Network)
人工智能·rnn·深度学习
吱吱企业安全通讯软件7 小时前
吱吱企业通讯软件保证内部通讯安全,搭建数字安全体系
大数据·网络·人工智能·安全·信息与通信·吱吱办公通讯