(1)公式:
假设:输入图片(Input)大小为I*I,卷积核(Filter)大小为K*K,步长(stride)为S,填充(Padding)的像素数为P,那卷积层输出(Output)的特征图大小为多少呢?
可以得出推导公式:
O=(I-K+2P)/S+1
(2)例子:
我们采用的卷积核大小为K=3*3,填充大小为P=1,步长为S=2。对5*5的输入特征图进行卷积生成3*3的特征图,结果如下图所示:
计算公式为:
Reference:
(1)https://blog.csdn.net/jacke121/article/details/79259348
(2)https://blog.csdn.net/u010725283/article/details/78593410/
(3)https://blog.csdn.net/leviopku/article/details/80327478
微信公众号(1)公式:假设:输入图片(Input)大小为I*I,卷积核(Filter)大小为K*K,步长(stride)为S,填充(Padding)的像素数为P,那卷积层输出(Output)的特征图大小为多少呢?可以得出推导公式:O=(I-K+2P)/S+1(2)例子:我们采用的卷积核大小为K=3*3,填充大小为P=1,步长为S=2。对5*5的输入特征图进行卷积生成3*3...
every blog every motto: Stay hungry, stay foolish.
0. 前言
主要讲下实际
卷积
运算中关于padding=same和padding=valid的
输出
特征
图
的
大小
,以及池化后
特征
图
的
大小
。
1. 正文
1.
卷积
运算
特别说明:
卷积
(除不尽)向下取整!!!!
特别说明:
卷积
(除不尽)向下取整!!!!
特别说明:
卷积
(除不尽)向下取整!!!!
关于
卷积
的基本运算参照
卷积
运算和运算后
特征
图
大小
计算
1
参数定义:
输入
大小
:intputH
卷积核
大小
:K
输出
图
像
大小
:outputH
1.1 padding=valid
不进行填充,
N = (W − F + 2P )/S+1
输出
图
片
大小
为 N×N
以resnet50为例,输入为[1,3,224,224],其中1为batchsize,3为通道数,224为height和width。
经过第一层
卷积
后,其
大小
为[1,64,112,112]
in_channels= 3//输入通道
out_channels= 64 //
输出
通道
nn.Conv2d(in_
输入的
图
片
特征
是(32,32,1)即长、宽为32,因为是灰度
图
所以通道为1。若为彩色
图
片则通道为R,G,B 3通道.
激活层维度不变。
经过第一层的
卷积
之后
图
片从(32,32)经过 5 * 5
大小
的
卷积核
的
特征
映射 变为6个(28 ,28)的
图
像。
即:28=(32-5+2*0)/1+1 不考虑padding的情况下
卷积
之后通过下采样即池化层再次提取
特征
,这里定义的池化窗口
大小
为(2,2) 即会把输入张量的两个维度都缩小一半。
所以
图
像从(28
out_size=in_size+2×padding−kernel_sizestride+1
out\_size = \frac{in\_size+2\times padding - kernel\_size}{stride} + 1
out_size=stridein_size+2×padding−kernel_size+1
如果想让输入和
输出
大小
一样,则stride必须为1,并且:
padding=kernel_size−12
padding = \frac{kernel\_siz
基本
计算公式
W为输入
大小
,F为
卷积核
大小
,P为填充
大小
(padding),S为步长(stride),N为
输出
大小
。有如下
计算公式
:N=(W−F+2P)S+1N=\frac{(W-F+2P)}{S}+1N=S(W−F+2P)+1
由上述公式很容易推得一些常用的
卷积层
参数——输入
输出
的
大小
不变,仅通道数量改变。
# 一个
卷积核
大小
为5*5的
卷积层
参数
kernel_size = 5
stride ...
4.常见的两个
卷积层
设置的问题
1.
卷积
神经
网络
的结构
卷积
神经
网络
(
CNN
)由输入层、
卷积层
、激活函数、池化层、全连接层组成,即INPUT(输入层)-CONV(
卷积层
)-RELU(激活函数)-POOL(池化层)-FC(全连接层)
我们用一个
图
进行展示:
2.
卷积
神经
网络
的
计算
卷积
神经
网络
(Convolutional Neural Network,
CNN
)
卷积
卷积核
神经
网络
公式
卷积
运算方式 补0(zero padding)池化(Pooling)
激活函数RelU (Rectified Linear Units) 全连接层(Fully connected layers)
标准
卷积
计算
举例1 x 1
卷积
计算
举例 全连接层
计算
举例常见的几种
卷积
神经
网络
介绍 LeNet AlexNet VGGNet ResNet
学着学着突然忘了
卷积
怎么算了(哭),为了避免下次突然失忆,还是写个笔记记录一下吧~
参考资料:https://zhuanlan.zhihu.com/p/268179286
一、单通道单
卷积核
这
计算公式
很简单,为方便描述,可以把
卷积核
以及
卷积核
扫描到
图
像的区域当作两个矩阵(但实际
计算
并不是矩阵乘法,不要搞混咯)。
具体
计算
的方式是:
将对应位置的元素相乘
将得到的所有乘积做一个求和
加上偏差bias
[左边是初始
图
片,右边是
卷积核
及其bias。]
w2 = (w1-k+2p)/s + 1
总结:
卷积
输出
大小
=[(输入
大小
-
卷积核
大小
+2*Padding)/步长]+1
所以当stride为1时,当
卷积核
的
大小
比padding的两倍大1时,可以不改变
特征
图
的尺寸,只改变通道数。
对于池化:
H=(H-K)/S+1
W=(W-K)/S+1
总结:池化
输出
大小
=[(输入
大小
-
卷积核
大小
)/步长]+1
反
卷积
输出
大小
(input_size-1)×strid
w2 = (w1-k+2p)/s + 1
总结:
卷积
输出
大小
=[(输入
大小
-
卷积核
大小
+2*Padding)/步长]+1
所以当stride为1时,当
卷积核
的
大小
比padding的两倍大1时,可以不改变
特征
图
的尺寸,只改变通道数。
对于池化:
H=(H-K)/S+1
W=(W-K)/S+1
总结:池化
输出
大小
=[(输入
大小
-
卷积核
大小
)/步长]+1
反
卷积
输出
大小
(input_size-1)×strid
则有:N=(W−F+2P)/2+1N=(W - F + 2P)/2 +1N=(W−F+2P)/2+1
卷积核
:一个
卷积核
只有三维,
卷积核
的厚度对应被
卷积
特征
的通道数,
卷积核
的个数对应
卷积
后的
输出
通道的通道数。
对于
CNN
卷积层
的参数选择,一般需要考虑
卷积核
的
大小
、步长、填充方式以及
卷积核
的数量等因素。
卷积核
的
大小
一般需要根据输入数据的
特征
大小
来选择,较小的
卷积核
可以捕捉更细节的
特征
,但
计算
量较大;较大的
卷积核
可以捕捉更宏观的
特征
,但可能会丢失一些细节。步长的选择可以影响
输出
特征
图
的
大小
,较大的步长可以减小
输出
特征
图
的
大小
,但可能会丢失一些信息。填充方式可以控制
输出
特征
图
的
大小
,常用的填充方式有valid和same两种,valid表示不填充,same表示填充使得
输出
特征
图
大小
与输入
特征
图
大小
相同。
卷积核
的数量可以控制模型的复杂度,一般需要根据具体任务来选择。