java 怎么做卷积运算,如何计算卷积神经网络的参数个数?

如果您参考具有16层的VGG网络(表1,列D),则 138M 指的是该网络的 total number of parameters ,即包括所有卷积层,但也包括完全连接的层 .

观察由3 x conv3-256 层组成的第3个卷积阶段:

第一个有N = 128个输入平面,F = 256个输出平面,

另外两个有N = 256个输入平面和F = 256个输出平面 .

对于这些层中的每一层,卷积核为3x3 . 在参数方面,这给出了:

128x3x3x256(权重)256(偏差)=第一个参数295,168,

256x3x3x256(权重)256(偏差)=另外两个参数的590,080个参数 .

如上所述,您必须对所有层执行此操作,但也必须对完全连接的层执行此操作,并将这些值相加以获得最终的138M数 .

UPDATE :各层之间的细分给出:

conv3-64 x 2 : 38,720

conv3-128 x 2 : 221,440

conv3-256 x 3 : 1,475,328

conv3-512 x 3 : 5,899,776

conv3-512 x 3 : 7,079,424

fc1 : 102,764,544

fc2 : 16,781,312

fc3 : 4,097,000

TOTAL : 138,357,544

特别是对于完全连接的层(fc):

fc1 (x): (512x7x7)x4,096 (weights) + 4,096 (biases)

fc2 : 4,096x4,096 (weights) + 4,096 (biases)

fc3 : 4,096x1,000 (weights) + 1,000 (biases)

(x)参见本文第3.2节:首先将完全连接的层转换为卷积层(第一个FC层转换为7×7转换层,最后两个FC层转换为1×1转换层) .

Details about fc1

如上所述,在馈送完全连接的层之前的空间分辨率是7x7像素 . 这是因为这个VGG Net在卷积之前使用了空间填充,详见本文第2.1节:

[...] conv的空间填充 . 层输入使得在卷积之后保留空间分辨率,即,对于3×3转换,填充是1个像素 . 层 .

使用这样的填充,并使用224x224像素输入图像,分辨率随着以下层逐渐减少:112x112,56x56,28x28,14x14和7x7在具有512个特征映射的最后卷积/池化阶段之后 .

这给出了一个传递给 fc1 的特征向量,其维数为:512x7x7 .

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页