深度学习模型大小由什么决定?

Posted 深度物联网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习模型大小由什么决定?相关的知识,希望对你有一定的参考价值。

在训练完一个网络保存模型以后,我常常会将最优的模型保存。最终大小可能是几十MB,可能是几百MB,但模型的大小是由什么决定的呢?其实我们的模型在我们确定网络结构以后就已经将模型的大小确定了,模型文件存放参数,参数数量又是网络结构决定,所以模型大小由网络结构决定。下面将具体介绍一下:

以LeNet-5手写体数字识别为例

下面是一个单通道图像的输入LeNet-5网络前向计算模拟图:

  • 网状立体格子表示kernel,其他颜色方图表示feature map(Input表示输入层,可以看做特殊的feature map)
  • 一个kernel对应一个feature map
  • 参数量主要为kernel大小
  • 每个kernel带一个bias

整个网络占据权重的为Convolution/Innerproduct 两层,分别计算参数量为,:

  1. C1: 5 x 5 x 20 = 500,5x5卷积核, 20个feature map输出,20个kernel

  2. C2: 20x 5 x 5 x 50 = 25000 ,20维度输入,则20x5x5 kernel,50个feature map输出,即相当于20通道的图像输入,则需要20x5x5的kernel来卷积乘,50个这样的卷积核操作得到50个feature map,50个kernel

  3. F1: 50x4x4x500 = 400000,50维度特征图输入,全连接,每个点做卷积乘,则kernel大小为50x4x4,共500个feature map输出,500个kernel

  4. 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 字节),基本接近,因为模型中可能还带有附加特性参数。

从上我们看出,在我们确定了网络的基本结构时模型大小就已经确定了。
我们在对一个网络进行训练时,常常使用一些预训练模型,这些预训练模型往往就是我们最后模型的大小!



什么是深度学习中的优化器--笔记

什么是优化器

在深度学习中,有损失的概念,损失告诉了我们模型在当前时刻的表现,我们需要利用损失来优化我们的模型,使其性能更好,那么如何优化呢?实际上,我们需要做的是计算损失,并且尽量将损失减小。神经网络的每一层都有很多的权重,这些参数决定着网络的输出,也决定着损失的大小,因此,以减小损失的方式更新权重,这个过程就叫做优化。优化器的作用就是优化网络。

常用的优化器

SGD(随机梯度下降)
每次只选择一个样本的数据来进行更新梯度。优点是参数更新快,缺点是每次更新采用的数据量小,容易震荡。
公式如下:

BGD(批量梯度下降)
每次迭代会使用全部的数据来更新梯度。优点是梯度更新平滑,缺点是参数更新较慢。
公式如下:

MBGD(小批量梯度下降)
小批量随机梯度下降可以看作是 SGD 和 BGD 的中间选择,每次选择数量为 n 的数据进行计算,既节约的每次更新的计算时间和成本,也减少了 SGD 的震荡,使得收敛更加快速和稳定。
公式如下:

momentum(动量)
主要解决随机梯度下降时的震荡问题,通过加入一个momentum参数,以本次计算得到的梯度和上次梯度更新的加权和作为本次要更新的梯度,加速网络收敛,同时抑制震荡,但是有可能难以找到最优点,因此在模型训练的后期通常会将其关闭。
公式如下:

Adagrad
Adagrad(adaptive gradient algorithm),实际上是在梯度更新时依据每个参数的重要程度对其进行自适应加权,具体做法是对不同参数使用不同的学习率,对于更新频率较低的参数施以较大的学习率,对于更新频率较高的参数用以较小的学习率。
RMSprop
主要解决Adagrad学习率会急剧下降的问题。
Adam
Adam(adaptive moment estimation)是目前最常被采用的优化器,是每个参数自适应学习率的方法。相当于RMSprop和momentum的结合。

本文参考
链接: https://www.cnblogs.com/froml77/p/14956375.html.

以上是关于深度学习模型大小由什么决定?的主要内容,如果未能解决你的问题,请参考以下文章

干货 | Caffe:一个深度学习框架

AI开发利器——深度学习框架Caffe-MPI加速比最好

深度机器学习中的batch的大小对学习效果有何影响

基于深度学习框架caffe的人脸检测

开源深度学习架构Caffe

Caffe深度学习计算框架