• 什么是CNN--Convolutional Neural Networks


    是近些年在机器视觉领域很火的模型,最先由 Yan Lecun 提出。
    如果想学细节可以看 Andrej Karpathy 的 cs231n 。

    How does it work?

    给一张图片,每个圆负责处理图片的一部分。
    这些圆就组成了一个 filter。
    filter 可以识别图片中是否存在指定的 pattern,以及在哪个区域存在。

     
     

    下图中有4个filter,每个filter的平行的点会负责图片上相同的区域。

     
     

    神经元利用 convolution 的技术查找pattern,简单地理解就是用 filter 的形式去查找图片是否具有某种 pattern。

     
     

    weights 和 bias 对模型的效果起着重要的作用。

    把白圆圈换成神经元,就是CNN的样子。

     
     

    Convolution层的神经元之间没有联系,它们各自都只连接inputs。

     
     

    同一层的神经元用相同的 weights 和 bias,这样同一层的神经元就可以抓取同样的pattern,只不过是在图片上的不同的区域。

     
     

    接下来是 ReLU(Rectified Linear Unit) 层和 Pooling 层,它们用来构建由 convolution 层找到的 pattern。

    CNN 也用 Back propagation 训练,所以也有 vanishing gradient 的可能。而 ReLU 作为激活函数的话,gradients会大体保持常值的样子,这样就不会在关键的那几层有很明显的下降。

    Pooling 层是用来降维的。
    经过 convolution 和 ReLU 的作用后,会有越来越复杂的形式,所以Pooling 层负责提取出最重要的 pattern,进而提高时间空间的效率。

     
     

    这三层可以提取出有用的 pattern,但它们并不知道这些 pattern 是什么。
    所以接着是 Fully Connected 层,它可以对数据进行分类。

     
     

    一个典型的 Deep CNN 由若干组 Convolution-ReLU-Pooling 层组成。


     
     

    但CNN也有个缺点,因为它是监督式学习,所以需要大量的有标签的数据




  • 相关阅读:
    Python Generators vs Iterators
    python staticmethod classmethod
    静态类型、动态类型、强类型以及弱类型语言
    Python串行运算、并行运算、多线程、多进程对比实验
    python字典根据value排序
    解读Python内存管理机制
    两个list 求交集效率对比
    Python error: Unable to find vcvarsall.bat
    max-length兼容ie
    return false 与return true 困惑
  • 原文地址:https://www.cnblogs.com/codehome/p/9729661.html
Copyright © 2020-2023  润新知