在imagenet上的图像分类challenge上Alex提出的alexnet网络结构模型赢得了2012届的冠军。要研究CNN类型DL网络模型在图像分类上的应用,就逃不开研究alexnet,这是CNN在图像分类上的经典模型(DL火起来之后)。

在DL开源实现caffe的model样例中,它也给出了alexnet的复现,具体网络配置文件如下https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt:

接下来本文将一步步对该网络配置结构中各个层进行详细的解读(训练阶段):

1. conv1阶段DFD(data flow diagram):

2. conv2阶段DFD(data flow diagram):

3. conv3阶段DFD(data flow diagram):

4. conv4阶段DFD(data flow diagram):

5. conv5阶段DFD(data flow diagram):

6. fc6阶段DFD(data flow diagram):

7. fc7阶段DFD(data flow diagram):

8. fc8阶段DFD(data flow diagram):

各种layer的operation更多解释可以参考http://caffe.berkeleyvision.org/tutorial/layers.html

从计算该模型的数据流过程中,该模型参数大概5kw+。

caffe的输出中也有包含这块的内容日志,详情如下:

[cpp] view plaincopy print?
  1. I0721 10:38:15.326920  4692 net.cpp:125] Top shape: 256 3 227 227 (39574272)
  2. I0721 10:38:15.326971  4692 net.cpp:125] Top shape: 256 1 1 1 (256)
  3. I0721 10:38:15.326982  4692 net.cpp:156] data does not need backward computation.
  4. I0721 10:38:15.327003  4692 net.cpp:74] Creating Layer conv1
  5. I0721 10:38:15.327011  4692 net.cpp:84] conv1 <- data
  6. I0721 10:38:15.327033  4692 net.cpp:110] conv1 -> conv1
  7. I0721 10:38:16.721956  4692 net.cpp:125] Top shape: 256 96 55 55 (74342400)
  8. I0721 10:38:16.722030  4692 net.cpp:151] conv1 needs backward computation.
  9. I0721 10:38:16.722059  4692 net.cpp:74] Creating Layer relu1
  10. I0721 10:38:16.722070  4692 net.cpp:84] relu1 <- conv1
  11. I0721 10:38:16.722082  4692 net.cpp:98] relu1 -> conv1 (in-place)
  12. I0721 10:38:16.722096  4692 net.cpp:125] Top shape: 256 96 55 55 (74342400)
  13. I0721 10:38:16.722105  4692 net.cpp:151] relu1 needs backward computation.
  14. I0721 10:38:16.722116  4692 net.cpp:74] Creating Layer pool1
  15. I0721 10:38:16.722125  4692 net.cpp:84] pool1 <- conv1
  16. I0721 10:38:16.722133  4692 net.cpp:110] pool1 -> pool1
  17. I0721 10:38:16.722167  4692 net.cpp:125] Top shape: 256 96 27 27 (17915904)
  18. I0721 10:38:16.722187  4692 net.cpp:151] pool1 needs backward computation.
  19. I0721 10:38:16.722205  4692 net.cpp:74] Creating Layer norm1
  20. I0721 10:38:16.722221  4692 net.cpp:84] norm1 <- pool1
  21. I0721 10:38:16.722234  4692 net.cpp:110] norm1 -> norm1
  22. I0721 10:38:16.722251  4692 net.cpp:125] Top shape: 256 96 27 27 (17915904)
  23. I0721 10:38:16.722260  4692 net.cpp:151] norm1 needs backward computation.
  24. I0721 10:38:16.722272  4692 net.cpp:74] Creating Layer conv2
  25. I0721 10:38:16.722280  4692 net.cpp:84] conv2 <- norm1
  26. I0721 10:38:16.722290  4692 net.cpp:110] conv2 -> conv2
  27. I0721 10:38:16.725225  4692 net.cpp:125] Top shape: 256 256 27 27 (47775744)
  28. I0721 10:38:16.725242  4692 net.cpp:151] conv2 needs backward computation.
  29. I0721 10:38:16.725253  4692 net.cpp:74] Creating Layer relu2
  30. I0721 10:38:16.725261  4692 net.cpp:84] relu2 <- conv2
  31. I0721 10:38:16.725270  4692 net.cpp:98] relu2 -> conv2 (in-place)
  32. I0721 10:38:16.725280  4692 net.cpp:125] Top shape: 256 256 27 27 (47775744)
  33. I0721 10:38:16.725288  4692 net.cpp:151] relu2 needs backward computation.
  34. I0721 10:38:16.725298  4692 net.cpp:74] Creating Layer pool2
  35. I0721 10:38:16.725307  4692 net.cpp:84] pool2 <- conv2
  36. I0721 10:38:16.725317  4692 net.cpp:110] pool2 -> pool2
  37. I0721 10:38:16.725329  4692 net.cpp:125] Top shape: 256 256 13 13 (11075584)
  38. I0721 10:38:16.725338  4692 net.cpp:151] pool2 needs backward computation.
  39. I0721 10:38:16.725358  4692 net.cpp:74] Creating Layer norm2
  40. I0721 10:38:16.725368  4692 net.cpp:84] norm2 <- pool2
  41. I0721 10:38:16.725378  4692 net.cpp:110] norm2 -> norm2
  42. I0721 10:38:16.725389  4692 net.cpp:125] Top shape: 256 256 13 13 (11075584)
  43. I0721 10:38:16.725399  4692 net.cpp:151] norm2 needs backward computation.
  44. I0721 10:38:16.725409  4692 net.cpp:74] Creating Layer conv3
  45. I0721 10:38:16.725419  4692 net.cpp:84] conv3 <- norm2
  46. I0721 10:38:16.725427  4692 net.cpp:110] conv3 -> conv3
  47. I0721 10:38:16.735193  4692 net.cpp:125] Top shape: 256 384 13 13 (16613376)
  48. I0721 10:38:16.735213  4692 net.cpp:151] conv3 needs backward computation.
  49. I0721 10:38:16.735224  4692 net.cpp:74] Creating Layer relu3
  50. I0721 10:38:16.735234  4692 net.cpp:84] relu3 <- conv3
  51. I0721 10:38:16.735242  4692 net.cpp:98] relu3 -> conv3 (in-place)
  52. I0721 10:38:16.735250  4692 net.cpp:125] Top shape: 256 384 13 13 (16613376)
  53. I0721 10:38:16.735258  4692 net.cpp:151] relu3 needs backward computation.
  54. I0721 10:38:16.735302  4692 net.cpp:74] Creating Layer conv4
  55. I0721 10:38:16.735312  4692 net.cpp:84] conv4 <- conv3
  56. I0721 10:38:16.735321  4692 net.cpp:110] conv4 -> conv4
  57. I0721 10:38:16.743952  4692 net.cpp:125] Top shape: 256 384 13 13 (16613376)
  58. I0721 10:38:16.743988  4692 net.cpp:151] conv4 needs backward computation.
  59. I0721 10:38:16.744000  4692 net.cpp:74] Creating Layer relu4
  60. I0721 10:38:16.744010  4692 net.cpp:84] relu4 <- conv4
  61. I0721 10:38:16.744020  4692 net.cpp:98] relu4 -> conv4 (in-place)
  62. I0721 10:38:16.744030  4692 net.cpp:125] Top shape: 256 384 13 13 (16613376)
  63. I0721 10:38:16.744038  4692 net.cpp:151] relu4 needs backward computation.
  64. I0721 10:38:16.744050  4692 net.cpp:74] Creating Layer conv5
  65. I0721 10:38:16.744057  4692 net.cpp:84] conv5 <- conv4
  66. I0721 10:38:16.744067  4692 net.cpp:110] conv5 -> conv5
  67. I0721 10:38:16.748935  4692 net.cpp:125] Top shape: 256 256 13 13 (11075584)
  68. I0721 10:38:16.748955  4692 net.cpp:151] conv5 needs backward computation.
  69. I0721 10:38:16.748965  4692 net.cpp:74] Creating Layer relu5
  70. I0721 10:38:16.748975  4692 net.cpp:84] relu5 <- conv5
  71. I0721 10:38:16.748983  4692 net.cpp:98] relu5 -> conv5 (in-place)
  72. I0721 10:38:16.748998  4692 net.cpp:125] Top shape: 256 256 13 13 (11075584)
  73. I0721 10:38:16.749011  4692 net.cpp:151] relu5 needs backward computation.
  74. I0721 10:38:16.749022  4692 net.cpp:74] Creating Layer pool5
  75. I0721 10:38:16.749030  4692 net.cpp:84] pool5 <- conv5
  76. I0721 10:38:16.749039  4692 net.cpp:110] pool5 -> pool5
  77. I0721 10:38:16.749050  4692 net.cpp:125] Top shape: 256 256 6 6 (2359296)
  78. I0721 10:38:16.749058  4692 net.cpp:151] pool5 needs backward computation.
  79. I0721 10:38:16.749074  4692 net.cpp:74] Creating Layer fc6
  80. I0721 10:38:16.749083  4692 net.cpp:84] fc6 <- pool5
  81. I0721 10:38:16.749091  4692 net.cpp:110] fc6 -> fc6
  82. I0721 10:38:17.160079  4692 net.cpp:125] Top shape: 256 4096 1 1 (1048576)
  83. I0721 10:38:17.160148  4692 net.cpp:151] fc6 needs backward computation.
  84. I0721 10:38:17.160166  4692 net.cpp:74] Creating Layer relu6
  85. I0721 10:38:17.160177  4692 net.cpp:84] relu6 <- fc6
  86. I0721 10:38:17.160190  4692 net.cpp:98] relu6 -> fc6 (in-place)
  87. I0721 10:38:17.160202  4692 net.cpp:125] Top shape: 256 4096 1 1 (1048576)
  88. I0721 10:38:17.160212  4692 net.cpp:151] relu6 needs backward computation.
  89. I0721 10:38:17.160222  4692 net.cpp:74] Creating Layer drop6
  90. I0721 10:38:17.160230  4692 net.cpp:84] drop6 <- fc6
  91. I0721 10:38:17.160238  4692 net.cpp:98] drop6 -> fc6 (in-place)
  92. I0721 10:38:17.160258  4692 net.cpp:125] Top shape: 256 4096 1 1 (1048576)
  93. I0721 10:38:17.160265  4692 net.cpp:151] drop6 needs backward computation.
  94. I0721 10:38:17.160277  4692 net.cpp:74] Creating Layer fc7
  95. I0721 10:38:17.160286  4692 net.cpp:84] fc7 <- fc6
  96. I0721 10:38:17.160295  4692 net.cpp:110] fc7 -> fc7
  97. I0721 10:38:17.342094  4692 net.cpp:125] Top shape: 256 4096 1 1 (1048576)
  98. I0721 10:38:17.342157  4692 net.cpp:151] fc7 needs backward computation.
  99. I0721 10:38:17.342175  4692 net.cpp:74] Creating Layer relu7
  100. I0721 10:38:17.342185  4692 net.cpp:84] relu7 <- fc7
  101. I0721 10:38:17.342198  4692 net.cpp:98] relu7 -> fc7 (in-place)
  102. I0721 10:38:17.342208  4692 net.cpp:125] Top shape: 256 4096 1 1 (1048576)
  103. I0721 10:38:17.342217  4692 net.cpp:151] relu7 needs backward computation.
  104. I0721 10:38:17.342228  4692 net.cpp:74] Creating Layer drop7
  105. I0721 10:38:17.342236  4692 net.cpp:84] drop7 <- fc7
  106. I0721 10:38:17.342245  4692 net.cpp:98] drop7 -> fc7 (in-place)
  107. I0721 10:38:17.342254  4692 net.cpp:125] Top shape: 256 4096 1 1 (1048576)
  108. I0721 10:38:17.342262  4692 net.cpp:151] drop7 needs backward computation.
  109. I0721 10:38:17.342274  4692 net.cpp:74] Creating Layer fc8
  110. I0721 10:38:17.342283  4692 net.cpp:84] fc8 <- fc7
  111. I0721 10:38:17.342291  4692 net.cpp:110] fc8 -> fc8
  112. I0721 10:38:17.343199  4692 net.cpp:125] Top shape: 256 22 1 1 (5632)
  113. I0721 10:38:17.343214  4692 net.cpp:151] fc8 needs backward computation.
  114. I0721 10:38:17.343231  4692 net.cpp:74] Creating Layer loss
  115. I0721 10:38:17.343240  4692 net.cpp:84] loss <- fc8
  116. I0721 10:38:17.343250  4692 net.cpp:84] loss <- label
  117. I0721 10:38:17.343264  4692 net.cpp:151] loss needs backward computation.
  118. I0721 10:38:17.343305  4692 net.cpp:173] Collecting Learning Rate and Weight Decay.
  119. I0721 10:38:17.343327  4692 net.cpp:166] Network initialization done.
  120. I0721 10:38:17.343335  4692 net.cpp:167] Memory required for Data 1073760256

ALEX net 解读相关推荐

  1. Alex net解读

    alexnet在深度学习的发展中具有奠基意义,此文条理性总结论文ImageNet Classification with Deep Convolutional Neural Networks中的知识点 ...

  2. 1024 程序员节专题论坛来袭,权威解读 MindSpore、CANN 5.0 特性和 HCIA MDC 开发者认证...

    "授人以鱼不如授人以渔",一句古话中蕴含的发展真理,我们将其套用到如今炽手可热的 AI 领域之上会发现无比适用.2018 年,华为提出了普惠 AI 的概念,降低 AI 开发门槛,让 ...

  3. 硬货 | 一文解读完五篇重磅ACL2017 NLP论文

    向AI转型的程序员都关注了这个号☝☝☝ 作者 | 洪亮劼 责编 | 何永灿 涉及自然语言处理.人工智能.机器学习等诸多理论以及技术的顶级会议--ACL 2017于今年7月31日-8月4日在加拿大温哥华 ...

  4. python网上编程课程-少儿编程 为你解读Python编程课程

    少儿编程 为你解读Python编程课程.重庆乐博乐博少儿编程培训学校的老师好评率高,具有很好的亲和力,专业知识讲解清晰,授课思路明晰,合理课程安排和辅导,针对学员的学习心理状态也会及时关注,赢得了广大 ...

  5. [caffe]深度学习之图像分类模型AlexNet解读

    在imagenet上的图像分类challenge上Alex提出的alexnet网络结构模型赢得了2012届的冠军.要研究CNN类型DL网络模型在图像分类上的应用,就逃不开研究alexnet,这是CNN ...

  6. Paper之IEEERSJ:2009年~2019年机器人技术(IEEE机器人和自动化国际会议RSJ智能机器人与系统国际会议机器人技术:科学与系统机器人学报)历年最佳论文简介及其解读

    Paper之IEEE&RSJ:2009年~2019年机器人技术(IEEE机器人和自动化国际会议&RSJ智能机器人与系统国际会议&机器人技术:科学与系统&机器人学报)历年 ...

  7. Paper:《Generating Sequences With Recurrent Neural Networks》的翻译和解读

    Paper:<Generating Sequences With Recurrent Neural Networks>的翻译和解读 目录 Generating Sequences With ...

  8. Paper之ACLEMNLP:2009年~2019年ACL计算语言学协会年会EMNLP自然语言处理的经验方法会议历年最佳论文简介及其解读

    Paper之ACL&EMNLP:2009年~2019年ACL计算语言学协会年会&EMNLP自然语言处理会的经验方法会议历年最佳论文简介及其解读 目录 ACL计算语言学协会年会& ...

  9. Paper:2017年的Google机器翻译团队《Transformer:Attention Is All You Need》翻译并解读

    Paper:2017年的Google机器翻译团队<Transformer:Attention Is All You Need>翻译并解读 目录 论文评价 1.Motivation: 2.创 ...

最新文章

  1. 机器学习笔记六:K-Means聚类,层次聚类,谱聚类
  2. C#面向对象(四)虚方法实现多态
  3. 7能看出圆的周长吗_分手后真的能看出一个人的人品吗
  4. angularJS--多个控制器之间的数据共享
  5. return另外一个用法
  6. 《go程序设计语言》读书笔记
  7. delimiter在mysql中的作用_细细研究MySql中delimiter起到的作用_MySQL
  8. linux环境下调试嵌入式设备时出现Aborted、segmentation fault、卡死的问题以及关于指针使用的一点想法
  9. 【poj 2891】Strange Way to Express Integers(数论--拓展欧几里德 求解同余方程组 模版题)...
  10. C# 客服端上传文件与服务器器端接收 (简单代码)
  11. Hadoop可视化与交互式工具:Zeppelin和Hue
  12. C语言编写游戏的程序教程,如何运用C语言编写搬山游戏
  13. ubuntu12.04安装配置opensips,搭建voip服务器
  14. 【Linux】Cachecloud安装部署图文并茂
  15. 高速电路设计实践学习笔记(一)电阻 电容 电感 磁珠
  16. 前端第二章:3.HTML文档声明、存储容量换算、字符编码、字符集、HTML帮助文档Zeal
  17. eclipse黑色主题黑色背景
  18. 扫盲:云计算、大数据和人工智能
  19. 【UI】产品设计之什么是色彩情绪
  20. 【目标检测论文阅读笔记】QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection

热门文章

  1. 计算机领域的顶级会议和期刊
  2. stringstream用法
  3. 谈一谈Spring-Mybatis在多数据源配置上的坑
  4. mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
  5. koa-static使用时报Unexpected token function
  6. AssemblyExecuteAdapter
  7. VMware VDI技术与实现
  8. [转】:VS 2010 : 如何开发和部署Outlook 2010插件(Add-in)
  9. N的阶乘末尾有多少个0
  10. NYOJ 267 郁闷的C小加(二)