行业报告 AI展会 数据标注 标注供求
数据标注数据集
主页 > 机器学习 > 正文

CNN——架构上的一些数字

      前面说了很多关于CNN的数值上的事,下面我们来看看网络架构。网络架构也是CNN的一个核心部分,由于CNN的特点是它的深度,所以深度模型的网络架构给了人们无数的想象,于是也有了无数的前辈创造了各种各样的模型。我们今天来看看那些经典的模型,不是从感性的角度上去观看,而是从理性的角度——去尝试计算一些具体的数字,让我们描绘出这些模型的一个简单轮廓。

 

      我们的目标问题是ImageNet分类问题,那么我们主要关注哪些问题呢?

  1. 模型的深度,模型的核心层(卷积层、全连接层)的数量,这代表了模型的某种“能力”,基本上大家都有一个共识,那忽略优化问题的情况下,就是越深的模型在函数拟合方面效果越好。这里直接利用Caffe计算其中的layers_.size(),由于其中还包括data layer和loss layer,所以统计数会比实际的层数要多。
  2. 每层模型的参数数量,参数的总量,这代表了模型的复杂度。从机器学习的理论上讲,参数越多,模型的表达能力理论上也会“越强”。这里通过Caffe计算所有learnable_params的count总和表示。
  3. 模型前向的所需的内存量。也就是Caffe中计算的memory_used_变量值。

 

AlexNet

 

      本文不是负责介绍历史的,所以不会花什么篇幅去聊故事。模型的prototxt来自:https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/train_val.prototxt

 

VGGNet

 

      VGGNet也是一个比较有代表性的网络,关于这个网络的“哲学”我们后面再开新贴去聊。利用论文和各处得到的信息,我们可以详细给出VGG19层模型的具体结构,参考的prototxt来自:https://gist.github.com/ksimonyan/3785162f95cd2d5fee77#file-readme-md

 

      CS231n Convolutional Neural Networks for Visual Recognition对VGG模型的内存占用量和参数数量做过一个计算,仅作参考:

  1. INPUT: [224x224x3]        memory:  224*224*3=150K   weights: 0
  2. CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*3)*64 = 1,728
  3. CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*64)*64 = 36,864
  4. POOL2: [112x112x64]  memory:  112*112*64=800K   weights: 0
  5. CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*64)*128 = 73,728
  6. CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*128)*128 = 147,456
  7. POOL2: [56x56x128]  memory:  56*56*128=400K   weights: 0
  8. CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*128)*256 = 294,912
  9. CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
  10. CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824
  11. POOL2: [28x28x256]  memory:  28*28*256=200K   weights: 0
  12. CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*256)*512 = 1,179,648
  13. CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
  14. CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296
  15. POOL2: [14x14x512]  memory:  14*14*512=100K   weights: 0
  16. CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
  17. CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
  18. CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296
  19. POOL2: [7x7x512]  memory:  7*7*512=25K  weights: 0
  20. FC: [1x1x4096]  memory:  4096  weights: 7*7*512*4096 = 102,760,448
  21. FC: [1x1x4096]  memory:  4096  weights: 4096*4096 = 16,777,216
  22. FC: [1x1x1000]  memory:  1000 weights: 4096*1000 = 4,096,000

  23. TOTAL memory: 24M * 4 bytes ~= 93MB / image (only forward! ~*2 for bwd)
  24. TOTAL params: 138M parameters
微信公众号

声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
SEM推广服务

Copyright©2005-2026 Sykv.com 可思数据 版权所有    京ICP备14056871号

关于我们   免责声明   广告合作   版权声明   联系我们   原创投稿   网站地图  

可思数据 数据标注行业联盟

扫码入群
扫码关注

微信公众号

返回顶部