cnn每一层会输出多个feature map, 每个Feature Map通过一种卷积滤波器提取输入的一种特征,每个feature map由多个神经元组成,假如某个feature map的shape是m*n, 则该feature map有m*n个神经元。对于卷积层会有kernel, 记录上一层的feature map与当前层的卷积核的权重,因此kernel的shape为(上一层feature map的个数,当前层的卷积核数)。

CNN网络结构

一种典型卷积网络结构是LeNet-5,用来识别数字的卷积网络。结构图如下(来自Yann LeCun的论文): 

卷积神经网络算法的一个实现文章中,有一个更好看的图: 

该图的输入是一张28*28大小的图像,在C1层有6个5*5的卷积核,因为C1层输出6个(28-5+1)(28-5+1)大小的feature map。然后经过子采样层,这里假设子采样层是对卷积层的均值处理(mean pooling), 其实一般还会有加偏置和激活的操作,为了简化,省略了这两步,只是对卷积层进行一个采样的操作。因此S2层输出的6个feature map大小为(24/2)(24/2).在卷积层C3中,它的输入是6个feature map,与C1不一样(C1只有一个feature map,如果是RGB的话,C1会有三个channel)。C3层有12个5*5卷积核,每个卷积核会与上一层的6个feature map分别做卷积(事实上,一般是选择几种输入feature map来做卷积,而不是全部的feature map),然后对这6个卷积结果求和组成一个新的feature map,即该层会有12个大小为(12-5+1)*(12-5+1)的feature map,这个feature map是经过sigmod 函数处理然后结果下一层S4。 

同理,S4层有12个(与卷积层的feature map数一致)大小为(8/2)*(8/2)的feature map。输出层把S4层的feature mapflatten一个向量,向量长度为12*4*4=192,以该向量作为输入,与下面的其它层全连接,进行分类等操作,也就是说把一张图片变成一个向量,接入到别的网络,如传统的BP神经网络,不过从整体来看,CNN可以看做是一个BP神经网络。

(李宏毅的深度学习课上cnn那节有讲,互相补充)

最新文章

  1. Elasticsearch集群状态脚本及grafana监控面板导出的json文件
  2. CAR
  3. leetcode: Path Sum II 迭代法
  4. Reflection实现通用增删改
  5. java泛型问题 关于警告:XX is a raw type
  6. Advanced Customization of the jQuery Mobile Buttons | Appcropolis
  7. wamp在win7下64位系统memcache/memcached安装教程
  8. css学习之 display:inline-block;
  9. js获取前之前或之后的日期
  10. php中$_FILES应用实例
  11. Java面试官最常问的volatile关键字
  12. hibernate 5.2.12配置
  13. Linux上使用源代码安装软件
  14. 在Java路上,我看过的一些书、源码和框架(转)
  15. 涨姿势:深入 foreach循环
  16. Windows下安装Tensorflow(python3.6):记录过程
  17. 【代码片段】如何使用CSS来快速定义多彩光标
  18. Mybatis之使用注解开发CRUD
  19. sencha touch list 批量选择扩展(2013-7-29)
  20. C# 后台动态添加标签(span,div) 以及模板添加

热门文章

  1. 批量添加数据SqlBulkCopy
  2. 2014年:Linux和开源的福祸之年
  3. Part5核心初始化_lesson2---设置svc模式
  4. 对于网站,APP开发流程的理解
  5. 使用JS完成首页定时弹出广告图片
  6. vs2010 在win8附加进程调试小技巧
  7. android studio中使用recyclerview小白篇(二)
  8. [Win32::Console]Perl终端版生命游戏
  9. 《C#多线程编程实战》2.4 SemaphoreSlim
  10. C语言字符串拼接