【详细】CNN中的卷积计算是什么-实例讲解

本文来自《老饼讲解-BP神经网络》www.bbbdata.com/

卷积计算是CNN中最基本的计算,它是卷积层最重要的组成部分,

下面讲讲CNN的卷积计算过程是什么样的,包括基础卷积计算、多通道卷积计算以及pytorch中的卷积计算。

一、 CNN的基础卷积计算

卷积层是卷积神经网络中最基础的层,基础卷积的计算就是通过一个卷积核对输入进行卷积计算

1.1.一个例子了解CNN的卷积计算是什么

要了解什么是CNN的卷积基础计算,直接通过一个例子来算一算,就一清二楚。 一个卷积计算结果示例如下:

下面详细讲讲上面的卷积结果的具体计算过程:

卷积层中的卷积核就是一个矩阵,直观来看它就是一个窗口,卷积窗口一般为正方形,即长宽一致, 卷积运算通过从左到右,从上往下移动卷积核窗口,将窗口覆盖的每一小块输入进行加权,作为输出

1.2.卷积层的生物意义

卷积核在生物上的意义就相当于动物的眼睛(接受器),

卷积核的大小就相当于眼睛的视野范围(接受野),卷积核的权重就相当于眼睛每一处的接收权重 由于视野有限,所以需要通过逐步移动来查看所有内容,其中眼睛移动的步幅就是卷积的步幅

二、卷积的拓展:多输入通道与多输出通道

2.1.多输入通道卷积

卷积计算支持多通道的输入,当输入为k个通道的时,卷积核为3维矩阵,第3维与输入通道保持一致

2.2.多输出通道卷积

卷积计算也支持多通道输出,需要输出多少个通道,就使用多少个卷积核就可以了

三、卷积的实现

3.1.pytorch实现卷积计算-例子

pytorch中使用torch.nn.Conv2d函数来实现卷积的计算 以上述卷积为例,在pytorch中可以如下实现:

python 复制代码
import torch
X =  torch.tensor([[[[1,3,1,2],[2,6,8,5],[4,2,1,0]]]], dtype=torch.float32)    # 输入数据
c = torch.nn.Conv2d(1, 1, kernel_size=(2,2),bias = False)                      # 初始化卷积类
c.weight.data =torch.tensor([[[[1,2],[2,0]]]], dtype=torch.float32)            # 设置权重 
out = c(X)                                                                     # 对输入进行卷积计算
#-------------打印结果-----------------------
print('输入数据:',X)                 
print('卷积核:',c.weight.data)
print('卷积结果:',out)

运行结果如下:

3.2.Conv2d函数的使用方法

Conv2d函数的完整入参如下:

python 复制代码
torch.nn.Conv2d(in_channels
                ,out_channels
                ,kernel_size
                ,stride       = 1
                ,padding      = 0
                ,dilation     = 1
                ,groups       = 1
                ,bias         = True
                ,padding_mode = 'zeros'
                ,device       = None
                ,dtype        = None)

各个参数的解释如下:

python 复制代码
in_channels   (int) :图象的通道数,也就是决定卷积核的通道数

out_channels (int) :卷积输出的通道数,也就是用多少个卷积核

kernel_size (int/tuple):卷积核的大小,输入5指5*5的卷积核,输入(3,4)指3*4的卷积核

stride (int/tuple):卷积核的步距

padding(int/tuple/str):边缘填充的象素数,5指上下左右都补充5个象素,(3,4)代表上下补充3象素,左右补3象素

padding_mode (str) :象素填充的方式,可选择项- 'zeros', 'reflect', 'replicate','circular'

dilation(int/tuple):"扩张卷积"的专用参数-扩张率,控制kernel各点之间的间隔数量

groups(int):Number of blocked connections from input channels to output channels. Default: 1

bias(bool):是否对卷积结果添加偏置

*详细可进一步查看 《Conv2d的官方说明》


相关链接:

《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂

相关推荐
罗小罗同学5 分钟前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤8 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭11 分钟前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~12 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码19 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
Seeklike20 分钟前
11.22 深度学习-pytorch自动微分
人工智能·pytorch·深度学习
YRr YRr1 小时前
如何使用 PyTorch 实现图像分类数据集的加载和处理
pytorch·深度学习·分类
HPC_fac130520678164 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
老艾的AI世界12 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
sp_fyf_202415 小时前
【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理