• 1*1卷积浅析


    1*1shape的卷积在很多神经网络中都有应用(如Google InceptionNet,Resnet等),比起我们常见的2*2,3*3,5*5的卷积,这样的卷积核有什么作用呢?

    首先,1*1的卷积可以增加网络层的非线性,它的卷积过程其实相当于全连接层的计算过程,并且还加入了非线性的激活函数(relu等),从而使网络结构变得更加的复杂。

    其次,1*1的卷积加入可以通过控制卷积核的数量达到放缩通道数大小的目的,从而实现特征降维,以实现参数和计算量的减少。

    下面举一个引入1*1和不引入1*1卷积的例子:

    1.不引入1*1卷积:

      input(28*28*192)→(conv(5*5*32,same))→output(28*28*32)

      计算参数量:(28*28*32)*(5*5*192)≈120M

    2.引入1*1卷积:

      input(28*28*192)→(conv*(1*1*16))→hidden(28*28*16)→(conv(5*5*32,same))→output(28*28*32)

      计算参数量:(28*28*16)*192+(28*28*32)*(5*5*6)≈12.4M

      约减少了十倍计算量

    又如Google InceptionNet:

    最初始版本的inceptionNet结构如下:

     改进后的结构如下:

    假设previous layer层的大小为28*28*192,非1*1卷积层核数按顺序分别为(64,128,32),黄色1*1卷积层核数分别为(96,16,32)则有:

    图一:weight:1*1*192*64+3*3*192*128+5*5*192*32=387072

       featuremap:28*28*64+28*28*128+28*28*32+28*28*192=28*28*416

    图二:weight:1*1*192*64+(1*1*192*96+3*3*96*128)+(1*1*192*16+5*5*16*32)+1*1*192*32=163328

       featuremap:28*28*64+28*28*128+28*28*32+28*28*32=28*28*256

    由此可证明,1*1的卷积核可以在增加网络结构复杂性的同时实现特征降维。

  • 相关阅读:
    Android Handler主线程和一般线程通信的应用分析
    在java中string为什么要设计成final的
    Java中有几种创建对象的方式
    String和StringBuilder、StringBuffer的区别
    正确的二分查找实现
    SSH编写程序中文乱码解决
    lamda表达式
    kmp算法核心代码
    简洁清晰的quicksort核心代码
    [趣题]生成多个质数的幂积序列
  • 原文地址:https://www.cnblogs.com/zdm-code/p/13932779.html
Copyright © 2020-2023  润新知