结合CNN可视化,对卷积神经网络的一点理解

本文详细解析了CNN中卷积层的工作原理,包括滤波器(filter)如何通过与输入通道交互生成特征映射,以及为何需要非线性激活(如ReLU)。讨论了同一输出通道filter是否一致,以及权重计算公式。还澄清了FLOPs在衡量模型复杂度中的作用。
摘要由CSDN通过智能技术生成

在CNN中,卷积层可以通过输入与filter做对应的操作,得到输出。
在下面函数中,in_ch:in channels;out_ch:out channels;3:kernel size

nn.Conv2d(in_ch, out_ch, 3)

那么具体是如何计算的呢
在这里插入图片描述
这是整个CNN的计算流程。其中最顶行为操作名称,第二行是(H,W,C),最下一行是值的色阶图。
下图中,输入为RGB图像,即in_ch=3,out_ch=10,kernel size=3x3
在这里插入图片描述
最下面一行可知,img的3个通道都是被归一化到[0,1]的;而Kernel则是随机的值,有正值有负值也有0;而且,三个通道对应的Kernel是不相同的。左边一列是img的三个通道(in channels)与对应Kernel做卷积操作;中间一列是卷积得到的中间产物;沿着虚线往后,则是不同通道的卷积中间产物相加,并加上一个偏移值Bias,得到一个输出通道。
也就是说n个in channel与n个Kernel做卷积得到n个intermediate,n个intermediate相加并加上Bias得到一个out channel(feature map)。
此处有个疑问:同一个out channel对应的filter到底是不是相同的,例子里是不同的,但是,很多博客都说是一个filter对应一个feature map。还是说,一个filter本身也是有与in channels对应数量的channels。请大佬解惑

对此问题,找到了一个满意的答案:解释1解释2,filter是由n个kernel堆叠而成的,filter size:(H,W,C),一个filter对应一个feature map的说法是对的。
在这里插入图片描述

为什么每一层卷积都需要做非线性操作(激活操作):就是因为Kernel的值是随机的,有正有负有零。
ReLU:f(x)=max(0,x)
在这里插入图片描述

在这里插入图片描述
上图是一个卷积操作,Kernel在channel上滑动,计算Kernel的值与对应位置的channel的值,求和得到一个值,即为Kernel对应channel位置的输出。由于padding=0,stride=1,所以Output的值要比Input小2。
Output的计算公式为:
Output = (Input - k - 2 * padding) / stride +1

为了方便理解,可以参考:cnn-explainer


以下内容有些跑题,但还是想补充一下。

一个filter也称为一个神经元(neuron),其覆盖的区域称为感受域(receptive field);
filter的值也成为权重(weights)或参数(parameters);
CNN中某一卷积层权重的计算公式:
假设
in channels:in_ch,
out channels:out_ch,
kernel size:k = m x n

weights = (m * n * in_ch) * out_ch + bias
		= (m * n * in_ch + 1) * out_ch

解释一下这个公式怎么来的,一个filter对应一个feature map(也就是out channel),filter的channels又等于in channels;一个filter对应一个bias。
在这里插入图片描述
结合上面这个图会更好理解,输入有3个通道,filter也有3个通道,filter的size为(3, 3),一个filter对应一个bias,输出有10个通道。
所以按上面的公式:
wtights = (3 * 3 * 3 + 1) * 10
但是这样子看,权重和图像的size没毛关系啊


FLOPs衡量模型复杂度:

FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

作者:chen liu
链接:https://www.zhihu.com/question/65305385/answer/451060549
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

卷积层计算FLOPs:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayiya_Oese

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值