深度学习模型大小由什么决定?
几十MB几百MB。
在训练完一个网络保存模型以后,我常常会将最优的模型保存。最终大小可能是几十MB,可能是几百MB,但模型的大小是由什么决定的呢?其实我们的模型在我们确定网络结构以后就已经将模型的大小确定了,模型文件存放参数,参数数量又是网络结构决定,所以模型大小由网络结构决定。下面将具体介绍一下:
以LeNet-5手写体数字识别为例
下面是一个单通道图像的输入LeNet-5网络前向计算模拟图:
- 网状立体格子表示kernel,其他颜色方图表示feature map(Input表示输入层,可以看做特殊的feature map)
- 一个kernel对应一个feature map
- 参数量主要为kernel大小
- 每个kernel带一个bias
整个网络占据权重的为Convolution/Innerproduct 两层,分别计算参数量为,:
-
C1: 5 x 5 x 20 = 500,5x5卷积核,20个feature map输出,20个kernel -
C2: 20x 5 x 5 x 50 = 25000 ,20维度输入,则20x5x5kernel,50个feature map输出,即相当于20通道的图像输入,则需要20x5x5的kernel来卷积乘,50个这样的卷积核操作得到50个feature map,50个kernel -
F1: 50x4x4x500 = 400000,50维度特征图输入,全连接,每个点做卷积乘,则kernel大小为50x4x4,共500个feature map输出,500个kernel -
F2: 500x1x1x10 = 5000,500维度特征图输入,全连接,kernel大小为500x1x1,共10个feature map输出,10个kernel
用float类型(4个字节)来存储参数,则总的参数量大小为:
- 500 + 25000 + 400000 + 5000 + (20 + 50 + 500 + 10) =
431080
字节数为:
- 431080 x 4 = 1724320 ≈ 1683.90625kb ≈ 1.64M
对比实际LeNet-5网络基于caffe训练出来的模型大小为:1.64 MB (1,725,025 字节),基本接近,因为模型中可能还带有附加特性参数。
从上我们看出,在我们确定了网络的基本结构时模型大小就已经确定了。
我们在对一个网络进行训练时,常常使用一些预训练模型,这些预训练模型往往就是我们最后模型的大小!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)