学习笔记-CIFAR10模型理解简述

学习笔记-CIFAR10模型理解简述

整个结构中包含三个convolution layer、三个pooling layer和两个fully connected layer。

每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元。

首先是数据层,测试数据100张为一批(batch_size),后面括号内是数据总大小。如100*32*32*3= 307200

Top shape: 100 3 32 32 (307200)

Top shape: 100 1 1 1 (100)

conv1(即产生图上 C1数据)层是一个卷积层,由32个特征图Feature Map构成。卷积核的大小是5*5,因为有pad为2,也就是每边增加两个单位的边界。 通过卷积之后,数据变成(32+2*2-5+1)*(32+2*2-5+1)

  1. layers {
  2. name: "conv1"
  3. type: CONVOLUTION
  4. bottom: "data"
  5. top: "conv1"
  6. blobs_lr: 1
  7. blobs_lr: 2
  8. convolution_param {
  9. num_output: 32
  10. pad: 2
  11. kernel_size: 5
  12. stride: 1
  13. weight_filler {
  14. type: "gaussian"
  15. std: 0.0001
  16. }
  17. bias_filler {
  18. type: "constant"
  19. }
  20. }
  21. }

Top shape: 100 32 32 32 (3276800)

pool1 是一个降采样层,有32个16*16的特征图。降采样的核是2*2的,所以数据变成16*16.

Top shape: 100 32 16 16 (819200)

然后接入RELU1

Top shape: 100 32 16 16 (819200)

conv2 是卷积层,核还是5*5,pad还是2。

Top shape: 100 32 16 16 (819200)

然后接入RELU2

Top shape: 100 32 16 16 (819200)

pool2是降采样层,降采样核为2*2,则数据变成8*8

Top shape: 100 32 8 8 (204800)

conv3 是卷积层,核还是5*5,pad还是2,特征是64个。

[html] view plaincopy

  1. Top shape: 100 64 8 8 (409600)

然后接入RELU2

Top shape: 100 64 8 8 (409600)

pool3是降采样层,降采样核为2*2,则数据变成4*4

[html] view plaincopy

  1. Top shape: 100 64 4 4 (102400)

ip1 是全连接层。某个程度上可以认为是卷积层。输出为64. 原始模型中,从5*5的数据通过5*5的卷积得到1*1的数据。 现在的模型数据为4*4,得到的数据也是1*1,构成了数据中的全连接。

Top shape: 100 64 1 1 (6400)

ip2是第二个全连接层,输出为10,直接输出结果,数据的分类判断在这一层中完成。

Top shape: 100 64 8 8 (409600)

[html] view plaincopy

  1. I0313 00:40:24.570014 13825 net.cpp:96] Setting up ip2
  2. I0313 00:40:24.570108 13825 net.cpp:103] Top shape: 100 10 1 1 (1000)
  3. I0313 00:40:24.570114 13825 net.cpp:113] Memory required for data: 31979600
  4. I0313 00:40:24.570127 13825 net.cpp:67] Creating Layer ip2_ip2_0_split
  5. I0313 00:40:24.570134 13825 net.cpp:394] ip2_ip2_0_split <- ip2
  6. I0313 00:40:24.570143 13825 net.cpp:356] ip2_ip2_0_split -> ip2_ip2_0_split_0
  7. I0313 00:40:24.570154 13825 net.cpp:356] ip2_ip2_0_split -> ip2_ip2_0_split_1
  8. I0313 00:40:24.570163 13825 net.cpp:96] Setting up ip2_ip2_0_split
  9. I0313 00:40:24.570171 13825 net.cpp:103] Top shape: 100 10 1 1 (1000)
  10. I0313 00:40:24.570176 13825 net.cpp:103] Top shape: 100 10 1 1 (1000)
  11. I0313 00:40:24.570181 13825 net.cpp:113] Memory required for data: 31987600

输入猫的图片

输出结果为:

[‘deer‘ ‘airplane‘ ‘cat‘ ‘frog‘ ‘bird‘]

[html] view plaincopy

  1. I0313 00:40:24.471560 13825 net.cpp:67] Creating Layer cifar
  2. I0313 00:40:24.471570 13825 net.cpp:356] cifar -> data
  3. I0313 00:40:24.471585 13825 net.cpp:356] cifar -> label
  4. I0313 00:40:24.471596 13825 net.cpp:96] Setting up cifar
  5. I0313 00:40:24.471602 13825 data_layer.cpp:45] Opening leveldb examples/cifar10/cifar10_test_leveldb
  6. I0313 00:40:24.549324 13825 data_layer.cpp:128] output data size: 100,3,32,32
  7. I0313 00:40:24.549372 13825 base_data_layer.cpp:36] Loading mean file fromexamples/cifar10/mean.binaryproto
  8. I0313 00:40:24.550582 13825 base_data_layer.cpp:64] Initializing prefetch
  9. I0313 00:40:24.550639 13825 base_data_layer.cpp:66] Prefetch initialized.
  10. I0313 00:40:24.550683 13825 net.cpp:103] Top shape: 100 3 32 32 (307200)
  11. I0313 00:40:24.550698 13825 net.cpp:103] Top shape: 100 1 1 1 (100)
  12. I0313 00:40:24.550709 13825 net.cpp:113] Memory required for data: 1229200
  13. I0313 00:40:24.550734 13825 net.cpp:67] Creating Layer label_cifar_1_split
  14. I0313 00:40:24.550750 13825 net.cpp:394] label_cifar_1_split <- label
  15. I0313 00:40:24.550775 13825 net.cpp:356] label_cifar_1_split -> label_cifar_1_split_0
  16. I0313 00:40:24.550802 13825 net.cpp:356] label_cifar_1_split -> label_cifar_1_split_1
  17. I0313 00:40:24.550824 13825 net.cpp:96] Setting up label_cifar_1_split
  18. I0313 00:40:24.550843 13825 net.cpp:103] Top shape: 100 1 1 1 (100)
  19. I0313 00:40:24.550855 13825 net.cpp:103] Top shape: 100 1 1 1 (100)
  20. I0313 00:40:24.550866 13825 net.cpp:113] Memory required for data: 1230000
  21. I0313 00:40:24.550889 13825 net.cpp:67] Creating Layer conv1
  22. I0313 00:40:24.550902 13825 net.cpp:394] conv1 <- data
  23. I0313 00:40:24.550926 13825 net.cpp:356] conv1 -> conv1
  24. I0313 00:40:24.550951 13825 net.cpp:96] Setting up conv1
  25. I0313 00:40:24.551573 13825 net.cpp:103] Top shape: 100 32 32 32 (3276800)
  26. I0313 00:40:24.551583 13825 net.cpp:113] Memory required for data: 14337200
  27. I0313 00:40:24.551599 13825 net.cpp:67] Creating Layer pool1
  28. I0313 00:40:24.551605 13825 net.cpp:394] pool1 <- conv1
  29. I0313 00:40:24.551615 13825 net.cpp:356] pool1 -> pool1
  30. I0313 00:40:24.551625 13825 net.cpp:96] Setting up pool1
  31. I0313 00:40:24.551633 13825 net.cpp:103] Top shape: 100 32 16 16 (819200)
  32. I0313 00:40:24.551638 13825 net.cpp:113] Memory required for data: 17614000
  33. I0313 00:40:24.551652 13825 net.cpp:67] Creating Layer relu1
  34. I0313 00:40:24.551658 13825 net.cpp:394] relu1 <- pool1
  35. I0313 00:40:24.551667 13825 net.cpp:345] relu1 -> pool1 (in-place)
  36. I0313 00:40:24.551676 13825 net.cpp:96] Setting up relu1
  37. I0313 00:40:24.551682 13825 net.cpp:103] Top shape: 100 32 16 16 (819200)
  38. I0313 00:40:24.551687 13825 net.cpp:113] Memory required for data: 20890800
  39. I0313 00:40:24.551695 13825 net.cpp:67] Creating Layer conv2
  40. I0313 00:40:24.551700 13825 net.cpp:394] conv2 <- pool1
  41. I0313 00:40:24.551710 13825 net.cpp:356] conv2 -> conv2
  42. I0313 00:40:24.551720 13825 net.cpp:96] Setting up conv2
  43. I0313 00:40:24.554986 13825 net.cpp:103] Top shape: 100 32 16 16 (819200)
  44. I0313 00:40:24.554996 13825 net.cpp:113] Memory required for data: 24167600
  45. I0313 00:40:24.555009 13825 net.cpp:67] Creating Layer relu2
  46. I0313 00:40:24.555024 13825 net.cpp:394] relu2 <- conv2
  47. I0313 00:40:24.555034 13825 net.cpp:345] relu2 -> conv2 (in-place)
  48. I0313 00:40:24.555043 13825 net.cpp:96] Setting up relu2
  49. I0313 00:40:24.555049 13825 net.cpp:103] Top shape: 100 32 16 16 (819200)
  50. I0313 00:40:24.555054 13825 net.cpp:113] Memory required for data: 27444400
  51. I0313 00:40:24.555061 13825 net.cpp:67] Creating Layer pool2
  52. I0313 00:40:24.555068 13825 net.cpp:394] pool2 <- conv2
  53. I0313 00:40:24.555076 13825 net.cpp:356] pool2 -> pool2
  54. I0313 00:40:24.555085 13825 net.cpp:96] Setting up pool2
  55. I0313 00:40:24.555094 13825 net.cpp:103] Top shape: 100 32 8 8 (204800)
  56. I0313 00:40:24.555099 13825 net.cpp:113] Memory required for data: 28263600
  57. I0313 00:40:24.555109 13825 net.cpp:67] Creating Layer conv3
  58. I0313 00:40:24.555114 13825 net.cpp:394] conv3 <- pool2
  59. I0313 00:40:24.555124 13825 net.cpp:356] conv3 -> conv3
  60. I0313 00:40:24.555135 13825 net.cpp:96] Setting up conv3
  61. I0313 00:40:24.561589 13825 net.cpp:103] Top shape: 100 64 8 8 (409600)
  62. I0313 00:40:24.561599 13825 net.cpp:113] Memory required for data: 29902000
  63. I0313 00:40:24.561611 13825 net.cpp:67] Creating Layer relu3
  64. I0313 00:40:24.561619 13825 net.cpp:394] relu3 <- conv3
  65. I0313 00:40:24.561627 13825 net.cpp:345] relu3 -> conv3 (in-place)
  66. I0313 00:40:24.561636 13825 net.cpp:96] Setting up relu3
  67. I0313 00:40:24.561642 13825 net.cpp:103] Top shape: 100 64 8 8 (409600)
  68. I0313 00:40:24.561646 13825 net.cpp:113] Memory required for data: 31540400
  69. I0313 00:40:24.561655 13825 net.cpp:67] Creating Layer pool3
  70. I0313 00:40:24.561661 13825 net.cpp:394] pool3 <- conv3
  71. I0313 00:40:24.561669 13825 net.cpp:356] pool3 -> pool3
  72. I0313 00:40:24.561678 13825 net.cpp:96] Setting up pool3
  73. I0313 00:40:24.561686 13825 net.cpp:103] Top shape: 100 64 4 4 (102400)
  74. I0313 00:40:24.561691 13825 net.cpp:113] Memory required for data: 31950000
  75. I0313 00:40:24.561699 13825 net.cpp:67] Creating Layer ip1
  76. I0313 00:40:24.561704 13825 net.cpp:394] ip1 <- pool3
  77. I0313 00:40:24.561714 13825 net.cpp:356] ip1 -> ip1
  78. I0313 00:40:24.561724 13825 net.cpp:96] Setting up ip1
  79. I0313 00:40:24.569967 13825 net.cpp:103] Top shape: 100 64 1 1 (6400)
  80. I0313 00:40:24.569975 13825 net.cpp:113] Memory required for data: 31975600
  81. I0313 00:40:24.569988 13825 net.cpp:67] Creating Layer ip2
  82. I0313 00:40:24.569993 13825 net.cpp:394] ip2 <- ip1
  83. I0313 00:40:24.570004 13825 net.cpp:356] ip2 -> ip2
  84. I0313 00:40:24.570014 13825 net.cpp:96] Setting up ip2
  85. I0313 00:40:24.570108 13825 net.cpp:103] Top shape: 100 10 1 1 (1000)
  86. I0313 00:40:24.570114 13825 net.cpp:113] Memory required for data: 31979600
  87. I0313 00:40:24.570127 13825 net.cpp:67] Creating Layer ip2_ip2_0_split
  88. I0313 00:40:24.570134 13825 net.cpp:394] ip2_ip2_0_split <- ip2
  89. I0313 00:40:24.570143 13825 net.cpp:356] ip2_ip2_0_split -> ip2_ip2_0_split_0
  90. I0313 00:40:24.570154 13825 net.cpp:356] ip2_ip2_0_split -> ip2_ip2_0_split_1
  91. I0313 00:40:24.570163 13825 net.cpp:96] Setting up ip2_ip2_0_split
  92. I0313 00:40:24.570171 13825 net.cpp:103] Top shape: 100 10 1 1 (1000)
  93. I0313 00:40:24.570176 13825 net.cpp:103] Top shape: 100 10 1 1 (1000)
  94. I0313 00:40:24.570181 13825 net.cpp:113] Memory required for data: 31987600
  95. I0313 00:40:24.570189 13825 net.cpp:67] Creating Layer accuracy
  96. I0313 00:40:24.570194 13825 net.cpp:394] accuracy <- ip2_ip2_0_split_0
  97. I0313 00:40:24.570202 13825 net.cpp:394] accuracy <- label_cifar_1_split_0
  98. I0313 00:40:24.570214 13825 net.cpp:356] accuracy -> accuracy
  99. I0313 00:40:24.570222 13825 net.cpp:96] Setting up accuracy
  100. I0313 00:40:24.570230 13825 net.cpp:103] Top shape: 1 1 1 1 (1)
  101. I0313 00:40:24.570235 13825 net.cpp:113] Memory required for data: 31987604
  102. I0313 00:40:24.570245 13825 net.cpp:67] Creating Layer loss
  103. I0313 00:40:24.570250 13825 net.cpp:394] loss <- ip2_ip2_0_split_1
  104. I0313 00:40:24.570257 13825 net.cpp:394] loss <- label_cifar_1_split_1
  105. I0313 00:40:24.570266 13825 net.cpp:356] loss -> loss
  106. I0313 00:40:24.570274 13825 net.cpp:96] Setting up loss
  107. I0313 00:40:24.570286 13825 net.cpp:103] Top shape: 1 1 1 1 (1)
  108. I0313 00:40:24.570291 13825 net.cpp:109]     with loss weight 1
  109. I0313 00:40:24.570305 13825 net.cpp:113] Memory required for data: 31987608
  110. I0313 00:40:24.570312 13825 net.cpp:170] loss needs backward computation.
  111. I0313 00:40:24.570317 13825 net.cpp:172] accuracy does not need backward computation.
  112. I0313 00:40:24.570322 13825 net.cpp:170] ip2_ip2_0_split needs backward computation.
  113. I0313 00:40:24.570338 13825 net.cpp:170] ip2 needs backward computation.
  114. I0313 00:40:24.570349 13825 net.cpp:170] ip1 needs backward computation.
  115. I0313 00:40:24.570359 13825 net.cpp:170] pool3 needs backward computation.
  116. I0313 00:40:24.570372 13825 net.cpp:170] relu3 needs backward computation.
  117. I0313 00:40:24.570384 13825 net.cpp:170] conv3 needs backward computation.
  118. I0313 00:40:24.570396 13825 net.cpp:170] pool2 needs backward computation.
  119. I0313 00:40:24.570406 13825 net.cpp:170] relu2 needs backward computation.
  120. I0313 00:40:24.570420 13825 net.cpp:170] conv2 needs backward computation.
  121. I0313 00:40:24.570432 13825 net.cpp:170] relu1 needs backward computation.
  122. I0313 00:40:24.570442 13825 net.cpp:170] pool1 needs backward computation.
  123. I0313 00:40:24.570456 13825 net.cpp:170] conv1 needs backward computation.
  124. I0313 00:40:24.570471 13825 net.cpp:172] label_cifar_1_split does not need backward computation.
  125. I0313 00:40:24.570482 13825 net.cpp:172] cifar does not need backward computation.
  126. I0313 00:40:24.570494 13825 net.cpp:208] This network produces output accuracy
  127. I0313 00:40:24.570505 13825 net.cpp:208] This network produces output loss
  128. I0313 00:40:24.570536 13825 net.cpp:467] Collecting Learning Rate and Weight Decay.
  129. I0313 00:40:24.570549 13825 net.cpp:219] Network initialization done.
  130. I0313 00:40:24.570554 13825 net.cpp:220] Memory required for data: 31987608
  131. I0313 00:40:24.570590 13825 solver.cpp:41] Solver scaffolding done.
  132. I0313 00:40:24.570595 13825 solver.cpp:160] Solving CIFAR10_quick
  133. I0313 00:40:24.570600 13825 solver.cpp:161] Learning Rate Policy: fixed

Top shape: 100 64 8 8 (409600)

时间: 2024-11-05 17:51:12

学习笔记-CIFAR10模型理解简述的相关文章

Java学习笔记之深入理解引用

引言:Java中数据传递的方式,除了基本数据类型是按照值传递,其它类型全部是按照引用传递,这和C++有很大区别,但是很多网上文章都解释的不清楚,甚至是错误的,在查阅资料之后,下面整理出一个比较容易理解的版本. 我们知道引用根据引用的类型不同有许多名称,如字符串引用,数组引用等等. 一.栈内存和堆内存 我们数组来引出和解释这两个概念. 数组引用变量只是一个引用,这个引用可以指向任何有效的内存. 简单的理解就是,这个引用是用来存放数据地址的(数据地址指向数据在内存中的存储位置),在声明引用变量的时候

android 浮动窗口学习笔记及个人理解(仿360手机助手)

非常感谢原文作者 http://blog.csdn.net/guolin_blog/article/details/8689140 经自己理解 程序运行界面如下图: 1.程序入口界面 2.小浮动窗口 3.大浮动窗口 由上图可看出,可以看出我们基本需要: 1.一个主Activity 2.小浮动窗口view界面 3.大浮动窗口view界面 对于浮动窗口的管理我们还需要 4.一个Service(在后台监控管理浮动窗口的状态) 5.窗口管理类(创建/消除浮动窗口) 代码: package com.ww.

CSS学习笔记09 简单理解BFC

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>BFC</title> 6 <style type="text/css"> 7 .div1 {background-color: #FCE38A; width: 200px; height: 100px;}

CSS学习笔记——盒模型,块级元素和行内元素的区别和区别

今天本来打算根据自己的计划进行前端自动化的学习的,无奈早上接到一个任务需求需要新增一个页面.自从因为工作需要转前端之后,自己的主要注意力几 乎都放在JavaScript上面了,对CSS和HTML这方面其实基础真的很差,今天在写页面的时候就被浮动啊.内外边距啊这些耽误了不少时间. 反思一下,自己确实在这些基础方面的不足很多,所以今后的学习笔记主要是我在工作中遇到的一些问题和他们的解决方法.其中可能中会有JS.CSS.HTML各方面的,我会把自己每一天学到的内容都记录一下,辅助自己打好基础. 今天在

【疯狂Java学习笔记】【理解面向对象】

[学习笔记]1.Java语言是纯粹的面向对象语言,这体现在Java完全支持面向对象的三大基本特征:封装.继承.多态.抽象也是面向对象的重要组成部分,不过它不是面向对象的特征之一,因为所有的编程语言都需要抽象. 2.面向对象开发方法比较结构化开发方法的优势在于可以提供更好的可重用性.可扩展性.可维护性. 3.基于对象和面向对象的区别:基于对象也使用了对象,但是无法通过现有的对象作为模板来生成新的对象类型,继而产生新的对象,也就是说,基于对象没有继承的特点.而面向对象有继承,而多态则是建立在继承的基

barabasilab-networkScience学习笔记5- Barab&#225;si-Albert 模型

第一次接触复杂性科学是在一本叫think complexity的书上,Allen博士很好的讲述了数据结构与复杂性科学,barabasi是一个知名的复杂性网络科学家,barabasilab则是他所主导的一个实验室,这里的笔记则是关于里面介绍的课程的笔记,当然别人的课程不是公开课,所以从ppt里只能看到骨干的东西了,对了补充下,slider相关的书籍在这里可以找到 这一节课有事蛮多数学推导,相比较对程序的掌握,感觉自己应该更重视数学一点. 好了不说了,这一节课讲什么呢?讲的BA模型,它解释了无标度性

【机器学习 第2章 学习笔记】模型评估与选择

1.训练误差:学习器在训练集上的误差,也称“经验误差” 2.泛化误差:学习器在新样本上的误差 显然,我们的目标是得到在新样本上表现更好的学习器,即泛化误差要小 3.过拟合:学习器把训练样本学的太好了,导致泛化性能下降(学过头了...让我联想到有些人死读书,读死书,僵化,不懂得变通和举一反三) 原因:学习能力过于强大,把一些不太一般的特性也学了进来 针对措施:不好解决,是机器学习面临的关键障碍 4.欠拟合:就是连训练集都没学好,更别说泛化了(有点管中窥豹,盲人摸象的意思). 原因: 学习能力低下

Direct-X学习笔记--X模型导入

一.介绍 经历了之前手写立方体的痛苦过程,终于到了网格模型这一步.我们做游戏的时候肯定不能只用立方体呀,想要复杂的人物模型肯定是需要美工同学们使用专业的工具才能创建出来的,这些模型文件中定义好了网格模型的形状以及材质纹理等信息,我们所要做的只是读取这个文件,然后就可以根据文件中的信息创建复杂的模型啦!然而说白了,这些东东DX已经为我们定义好了,我们背一背API就行啦! 创建这些模型一般用3DMAX或者Maya软件,然而我作为一个程序都写不太明白的人,并不需要过多的了解这个东东,只需要知道它导出的

C#学习笔记---函数 的理解及总结(入门级)

*内容可能会有不到位的地方,希望小伙伴们顺便找出来,共同在IT这个“坑“里越陷越深,做一个有深度的程序”猿“:深夜发博只图进步与...你懂得!! 1)函数: 主要的功能就是为了让代码结构更加良好.函数是——实现相对独立功能的程序代码模块(程序段).函数的四要素:函数名,输入,输出,运算 *有的函数没有输入,函数名后的小括号中可以不写东西,但必须要有小括号.*有的函数没有返回,在函数名的左侧不要写数据类型了,写void即可.(只是输出要显示,不往“Main”的函数里代入.直接输出用void) 函数