权重尺寸的计算,张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算,以及FC的维度卷积替代方案 | 您所在的位置:网站首页 › 全连接层数量计算公式 › 权重尺寸的计算,张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算,以及FC的维度卷积替代方案 |
文章目录
背景:权重层的概念Input 尺寸大小卷积层(Conv Layer)的输出张量(图像)的大小池化层(MaxPool Layer)的输出张量(图像)的大小全连接层(Fully Connected Layer)的输出张量(图像)的大小对 1 * 1 卷积可以减少参数进行举例 :
Conv Layer参数数量MaxPool Layer参数数量Fully Connected (FC) Layer参数数量权重的权值共享机制参考:
背景:
设计某网络, cfg = { 'A' : [64, 64, 'M'],} def make_layers(cfg): layers = [] input_channel = 3 for l in cfg: if l == 'M': layers += [nn.MaxPool2d(kernel_size=2, stride=2)] continue layers += [nn.Conv2d(input_channel, l, kernel_size=3, padding=1)] layers += [nn.ReLU(inplace=True)] input_channel = l return nn.Sequential(*layers)这里面对于W的值(weight权重)的尺寸计算引起了兴趣: 权重层的概念 卷积层和全连接层具有权重系数,因此也被称为权重层;池化层不涉及权重,因此不属于权重层,在计算参数量时,不被计数。其中, 卷 积 层 权 重 的 大 小 = 卷 积 核 的 s i z e × 卷 积 核 的 n u m b e r 卷积层权重的大小=卷积核的size × 卷积核的number 卷积层权重的大小=卷积核的size×卷积核的number (如:size为3x3x3,number 128,则权重为3x3x3x128); 卷积核的深度必须和输入张量的深度相同 全连接层的权重为:前一层节点数×本层的节点数。 以上都是不考虑偏置的前提下。 https://zhuanlan.zhihu.com/p/29119239 Input: 一张图像的尺寸是 1 ∗ 3 ∗ 32 ∗ 32 1*3*32*32 1∗3∗32∗32 卷积层(Conv Layer)的输出张量(图像)的大小定义如下: O=输出图像的尺寸。 I=输入图像的尺寸。 K=卷积层的核尺寸 N=核数量 S=移动步长 P =填充数 输出图像尺寸的计算公式如下: O = ( I − K + 2 P ) / S + 1 O =( I-K+2P)/S +1 O=(I−K+2P)/S+1 输出图像的通道数等于核数量N 示例: 输入图像的尺寸为 1 ∗ 3 ∗ 32 ∗ 32 1*3*32*32 1∗3∗32∗32.第一个卷积层有 N = 64 N=64 N=64个尺寸为 K = 3 ∗ 3 ∗ 3 K=3*3*3 K=3∗3∗3的核。步长为 S = 1 S=1 S=1,填充为 P = 1 P=1 P=1. 输出尺寸: 单通道尺寸: O = ( 32 − 3 + 2 ∗ 1 ) / 1 + 1 = 32 O = (32-3+2*1)/1 +1 =32 O=(32−3+2∗1)/1+1=32 通道: N = 64 N=64 N=64 输出的图像为 64 ∗ 32 ∗ 32 64*32*32 64∗32∗32 池化层(MaxPool Layer)的输出张量(图像)的大小定义如下: O=输出图像的尺寸。 I=输入图像的尺寸。 S=移动步长 P S P_S PS=池化层尺寸 输出图像尺寸的计算公式如下: O = ( I − P s ) / S + 1 O = (I - P_s)/S +1 O=(I−Ps)/S+1 不同于卷积层,池化层的输出通道数不改变。 示例:每1层卷积层后的池化层的池化层尺寸为22,步长为2。根据前面卷积层的输出为6432*32。池化层的输出图像尺寸如下: O = ( 32 − 2 ) / 2 + 1 = 16 O=(32-2)/2+1=16 O=(32−2)/2+1=16 输出尺寸为 64 ∗ 16 ∗ 16 64*16*16 64∗16∗16 全连接层(Fully Connected Layer)的输出张量(图像)的大小全连接层输出向量长度等于神经元的数量。 全连接层在整个卷积神经网络中起到“分类器”的作用。 如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。 在实际使用中,全连接层可由卷积操作实现: 对前层是全连接的全连接层可以转化为卷积核为 1 ∗ 1 1*1 1∗1的卷积;前层是卷积层的全连接层可以转化为卷积核为 h ∗ w h*w h∗w的全局卷积,h和w分别为前层卷积结果的高和宽。目前由于全连接层参数冗余(仅全连接层参数就可占整个网络参数80%左右),近期一些性能优异的网络模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代FC来融合学到的深度特征,最后仍用softmax等损失函数作为网络目标函数来指导学习过程。 需要指出的是,用GAP替代FC的网络通常有较好的预测性能。思想就是:用 feature map 直接表示属于某个类的 confidence map,比如有10个类,就在最后输出10个 feature map,每个feature map中的值加起来求平均值,然后把得到的这些平均值直接作为属于某个类别的 confidence value,再输入softmax中分类, 更重要的是实验效果并不比用 FC 差。 对 1 * 1 卷积可以减少参数进行举例 :如果: input feature map是 7 ∗ 7 ∗ 512 7*7*512 7∗7∗512 output feature map是 1 ∗ 1 ∗ 4096 1*1*4096 1∗1∗4096 如果使用全连接,那么需要的权值参数数目(忽略偏置参数,下同)为 7 ∗ 7 ∗ 512 ∗ 4096 7*7*512*4096 7∗7∗512∗4096 如果使用 7 ∗ 7 7*7 7∗7卷积核,需要的权值参数数目为 7 ∗ 7 ∗ 512 ∗ 4096 7*7*512*4096 7∗7∗512∗4096 如果使用 1 ∗ 1 1*1 1∗1卷积核,且权值共享,需要的权值参数数目为11512*4096 但得到的output feature map为774096需要再做一个global average pooling才能变为114096此时确实可以减少权植参数数目。https://blog.csdn.net/qq_34807908/article/details/81736336 Conv Layer参数数量在CNN中,每层有两种类型的参数:weights 和biases.总参数数量为所有weights和biases的总和. 定义如下: W C = 卷 积 层 的 w e i g h t s 数 量 W_C=卷积层的weights数量 WC=卷积层的weights数量 B C = 卷 积 层 的 b i a s e s 数 量 B_C=卷积层的biases数量 BC=卷积层的biases数量 P C = 所 有 参 数 的 数 量 P_C=所有参数的数量 PC=所有参数的数量 K=核尺寸 N=核数量 C =输入图像通道数 卷积层中,核的深度等于输入图像的通道数.于是每个核有 K ∗ K K*K K∗K个参数.并且有 N N N个核.由此得出以下的公式. W C = K 2 × C × N W_C=K^2×C×N WC=K2×C×N B C = N B_C=N BC=N P C = W C + B C P_C=W_C + B_C PC=WC+BC MaxPool Layer参数数量没有与MaxPool layer相关的参数量.尺寸,步长和填充数都是超参数. Fully Connected (FC) Layer参数数量在CNN中有两种类型的全连接层. 第1种是连接到最后1个卷积层 Conv—>FC另外1种的FC层是连接到其他的FC层 FC–>FC两种情况我们分开讨论. 类型1:连接到Conv Layer (Conv—>FC) 定义如下: W c f = w e i g h t s 的 数 量 W_{cf}= weights的数量 Wcf=weights的数量 B c f = b i a s e s 的 数 量 B_{cf}= biases的数量 Bcf=biases的数量 P v f 总 参 数 的 数 量 P_{vf}总参数的数量 Pvf总参数的数量 O= 前卷积层的输出图像的尺寸 N = 前卷积层的核数量 F = 全连接层的神经元数量 W c f = O 2 × N × F W_{cf}= O^2×N×F Wcf=O2×N×F B c f = F B_{cf}=F Bcf=F P v f = W c f + B c f P_{vf}=W_{cf} +B_{cf} Pvf=Wcf+Bcf 参数数目远大于所有Conv Layer的参数和. 类型2:连接到FC Layer ( FC–>FC) 定义如下: W f f = w e i g h t s 的 数 量 W_{ff}= weights的数量 Wff=weights的数量 B f f = b i a s e s 的 数 量 B_{ff}= biases的数量 Bff=biases的数量 P f f = 总 参 数 的 数 量 P_{ff}= 总参数的数量 Pff=总参数的数量 F= 当前FC层的神经元数量 F − 1 = 前 F C 层 的 神 经 元 数 量 F_{-1} = 前FC层的神经元数量 F−1=前FC层的神经元数量 W f f = F − 1 × F W_{ff}= F_{-1} ×F Wff=F−1×F B f f = F B_{ff}= F Bff=F P f f = W f f + B f f P_{ff}= W_{ff}+B_{ff} Pff=Wff+Bff 权重的权值共享机制
https://www.cnblogs.com/jfdwd/p/10964031.html |
CopyRight 2018-2019 实验室设备网 版权所有 |