卷积神经网络VGG16参数数量的计算和理解

2019-04-12  本文已影响0人  hexter

先说一下我对神经网络的理解:神经网络就是用巨量的简单的非线性函数组合起来拟合复杂的未知函数。比如,人类识别不同的物体、识别不同动物、不同植物是个复杂的未知函数。虽然未知,但没事,我们的神经网络可以用巨量的简单非线性函数组合来拟合出来。而且实践证明在很多场景下效果非常好。而如何确定这些巨量的简单非线性函数的大量参数呢?通过机器学习,机器训练。

著名的卷积神经网络VGG16,论文上写参数有1.3亿个,查了很多文章,很多都是错的,有些对的,但是没有解释为什么这样算,意义是啥。

最近发现难以理解的原因是对卷积的误解。网上几乎所有讲卷积网络的文章,演示卷积的时候都是一个n×n的表。其实神经网络里的卷积核是立体的三维卷积核,而卷积过程也是3维卷积。

虽然vgg输入是一个224×224的图片,但是考虑到图片的色彩,那么输入就是一个224×224×3的3维矩阵。所以卷积核也是三维的才匹配。考虑到每一层有多个卷积核,那就是再加一维,所以每一层其实一个4维矩阵来运算处理输入的3维矩阵。

下面计算vgg16的参数:

计算里:乘法里前面3个数字是三维的卷积核的尺寸,乘法项最后一个数字是这一层的卷积核数量,加法项是偏置参数数量

第1层: =3*3*3*64+64;

第1层: 1792 =3*3*3*64+64;前面的3*3*3是三维的卷积核,64是这一层的卷积核数量,最后的是偏置参数数量

第2层: 36928    =3*3*64*64+64

第3层: 73856    =3*3*64*128+128

第4层: 147584  =3*3*128*128+128

第5层: 295168  =3*3*128*256+256

第6层: 590080  =3*3*256*256+256

第7层: 590080  =3*3*256*256+256

第8层: 1180160  =3*3*256*512+512

第9层: 2359808  =3*3*512*512+512

第10层:2359808  =3*3*512*512+512

第11层:2359808  =3*3*512*512+512

第12层:2359808  =3*3*512*512+512

第13层:2359808  =3*3*512*512+512

第14层:102764544=7*7*512*4096+4096

第15层:16781312 =4096*4096+4096

第16层:4097000  =4096*1000+1000

总计:138357544个

上一篇下一篇

猜你喜欢

热点阅读