tensorflow 手把手入门, 用”人话”解释CNN

本文深入浅出地介绍了卷积神经网络(CNN)的基本原理及在图像和文本分析中的应用,并探讨了CNN的关键特性如卷积操作和池化层的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一期我们讲到Pycon 2016 tensorflow 研讨会总结 — tensorflow 手把手入门 #第二讲 word2vec . 今天是我们第三讲, 仔细讲一下CNN.

所讲解的Workshop地址:http://bit.ly/tf-workshop-slides
示例代码地址:https://github.com/amygdala/tensorflow-workshop

首先什么是CNN? 其实, 用”人话”简洁地说, 卷积神经网络关键就在于”卷积”二字, 卷积是指神经网络对输入的特征提取的方法不同. 学过卷积的同学一定知道, 在通信中, 卷积是对输入信号经过持续的转换, 持续输出另一组信号的过程.

convolution_of_box_signal_with_itself2

上图来自维基百科, 经过红色方框的持续转换, 我们关注红色方框和蓝色方框的重叠面积, 于是我们得到新的输出: 黑色线的函数. 这正是通过卷积生成新函数的过程.

CNN对输入的处理也是一样, 它把输入用块的单位提取特征, 这样高维的图片马上就降维了:

untitled

用黄色块提取特征, 上面的大方框, 最多可以提取9个黄色块的特征.

或者从神经网络连接结构的角度, CNN的底层与隐藏不再是全连接, 而是局部区域的成块连接:

untitled

成块连接后, 那些小块, 还能在上层聚集成更大的块:

untitled

但是, 如果用上面的方法堆砌CNN网络, 隐藏层的参数还是太多了, 不是吗? 每个相邻块都要在上层生成一个大的块.

所以有时我们为了减少参数复杂度, 不严格把相邻的块都至少聚合成一个上层块, 我们可以把下层块分一些区域, 在这些区域中聚合:

untitled

瞧! 这里的红色块的层与绿色块的连接, 是不是就没有原来的密集了? 这就是(Pooling Layer)分池层, 把小的块分割成一个个池子, 也就是大块:

untitled

再来看看2D图片输入的CNN效果:

untitled

以及用了Pooling Layer的效果:

untitled

当然, CNN不仅可以使用在图片分析上, 也可以使用在文本分析上, 因为句子中邻近的单词总是有相关性的, 不是吗?

untitled

 

 

参考文献

重要的Tensorflow资料:

研讨会PPT下载:

研讨会视频:

https://www.youtube.com/watch?v=GZBIPwdGtkk

 

  1. Tensorflow backgroud 是一个官方的Tensorflow动画教程非常棒:http://playground.tensorflow.org/
  2. TFLearn:一个深度学习的tensorflow上层API库。https://github.com/tflearn/tflearn
  3. 一些Tensorflow模型的实现: https://github.com/tensorflow/models
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值