赞
踩
主要想要自己总结一下一个神经网络的参数如何计算。
(基础)激活层的参数计算
一个神经元的激活层,如果输入为m个向量,那么涉及到的参数为输入向量的权值wi,偏置值bk,参数数量为m+1。
(1)卷积层计算方法:
卷积的计算过程包括:卷积核与图像对应区域求内积之后,加上一个偏置bias后送入激活函数。
因此,卷积涉及到的参数包括:卷积核的参数,偏置bias。
(2)全连接层的参数计算方法:
全连接层的计算过程包括:输入的信号值与输出的m个神经元权值相乘后相加,然后再加上偏置bias,最后送入激活函数。得到输出信号值。
所以全连接层的参数涉及:神经元的权值和偏置bias。
(3)池化层计算方法
池化层就是pooling后下采样,本身并没有参数,但是下采样之后,需要乘上权值后加一个偏置后进入激活层。因此引入了2个参数。
(4)RBF连接
与一般的全连接的区别在于,径向基神经网络没有偏置量。假设输入为m,输出为n,参数量就是m*n。
对于卷积层来说,神经元的数量只与卷积层输出的feature map的尺寸有关,如果输出的feature map为10x10x1,那么该卷积层的神经元个数就是100。
连接指的是参数与参数之间的交互次数。也就决定了模型推理1次所需要的算力。
例如LeNet5的第1个卷积层。
连接次数:(5*5+1)*6 *(28*28)=122,304个
卷积操作的可训练参数是(5*5+1)*6
左边是卷积的可训练参数,右边是C1层每个feature map的神经元个数,左右对应关系是1对28*28,相乘即为连接数。(每个链接对应1次计算,由wa+b可知,每个参数参与1次计算,所以1个单位的偏置b也算进去)
C1: (5x5+1)x6=156
每个卷积运算加上激活函数需要5x5+1,一共6个卷积核,所以(5x5+1)x6
S2:6x2=12
每一个图对应一个权值和一个偏置bias,一共6个,所以参数是6x2=12.
C3: (5x5x3+1)x6+(5x5x4+1)x6+ (5x5x4+1)x3+(5x5x6+1)x1=456+606+303+152=1516
这里有16个卷积核,通道数不仅相同,如表所示。
表1:C3的卷积对应关系
S4:2x16=32
每一个图对应一个权值和一个偏置bias,一共16个,所以参数是32。
C5:(5x5x16+1)x120=48120
每一个卷积核都有16个channel,再加上一个偏置。共计120个卷积核。
F6:(120+1)x84=10164
对于每一个输出值而言,120个权重和1个偏置,输出一共84个输出值。
F7:84x10=840
最后一个输出层,由于是径向基神经元,所以只有输入84个权重,一共10个输出值。84*10.
共计参数量:156+12+1516+32+48120+10164+840=60840。
注意到全连接层的参数量占用总参数量的97.2%。
LeNet5的第一个卷积层。
C1:156x28x28
卷积操作的参数一共有(5x5+1)*6次,输出的feature map尺寸是28x28。乘起来就是总的连接数量。
S2: (2x2+1)x6x14x14
一次池化操作需要对原图像的2x2个像素进行操作,输出的feature map尺寸是14x14
C3:1516x10x10=151600
S4:(2x2+1)x16x5x5=2000
C5:48120*1*1=48120
F6:10164*1*1=10164
out:84*10=840
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。