首页 > 其他分享 >深度学习-卷积神经网络-经典的卷积网络incepttion-ResNet-DenceNet-46

深度学习-卷积神经网络-经典的卷积网络incepttion-ResNet-DenceNet-46

时间:2024-02-25 23:05:34浏览次数:21  
标签:layers name conv 卷积 incepttion DenceNet base bn block

目录

1. Inception



其中的一部分:

Inception相比之前的VGG LeNet这些都是单条线的
Inception 多分支并行 再concat

Inception 第一版GoogleNet 特征总结: NIN Network in Network
Incept_v3: NININ 套了两次

2. ResNet


仅仅是go deeper并不能提升准确率

引入短路连接

实际实现:

残差网络越深 error越低

源码实现:

def conv_block(input_tensor,
               kernel_size,
               filters,
               stage,
               block,
               strides=(2, 2)):
    """A block that has a conv layer at shortcut.

    # Arguments
        input_tensor: input tensor
        kernel_size: default 3, the kernel size of
            middle conv layer at main path
        filters: list of integers, the filters of 3 conv layer at main path
        stage: integer, current stage label, used for generating layer names
        block: 'a','b'..., current block label, used for generating layer names
        strides: Strides for the first conv layer in the block.

    # Returns
        Output tensor for the block.

    Note that from stage 3,
    the first conv layer at main path is with strides=(2, 2)
    And the shortcut should have strides=(2, 2) as well
    """
    filters1, filters2, filters3 = filters
    if backend.image_data_format() == 'channels_last':
        bn_axis = 3
    else:
        bn_axis = 1
    conv_name_base = 'res' + str(stage) + block + '_branch'
    bn_name_base = 'bn' + str(stage) + block + '_branch'

    x = layers.Conv2D(filters1, (1, 1), strides=strides,
                      kernel_initializer='he_normal',
                      name=conv_name_base + '2a')(input_tensor)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '2a')(x)
    x = layers.Activation('relu')(x)

    x = layers.Conv2D(filters2, kernel_size, padding='same',
                      kernel_initializer='he_normal',
                      name=conv_name_base + '2b')(x)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '2b')(x)
    x = layers.Activation('relu')(x)

    x = layers.Conv2D(filters3, (1, 1),
                      kernel_initializer='he_normal',
                      name=conv_name_base + '2c')(x)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '2c')(x)

    shortcut = layers.Conv2D(filters3, (1, 1), strides=strides,
                             kernel_initializer='he_normal',
                             name=conv_name_base + '1')(input_tensor)
    shortcut = layers.BatchNormalization(
        axis=bn_axis, name=bn_name_base + '1')(shortcut)

    x = layers.add([x, shortcut])
    x = layers.Activation('relu')(x)

layers.add([x, shortcut])直接是数值上的相加 F(X)+X

3. DenseNet


在一个block里面 卷积计算的feature_map都会累加到最后的输出

VGG ResNet DenceNet比较

4. MobileNet

。。。

标签:layers,name,conv,卷积,incepttion,DenceNet,base,bn,block
From: https://www.cnblogs.com/cavalier-chen/p/18033304

相关文章

  • 位运算卷积
    位运算卷积快速求序列\(C\):\[C_i=\sum_{j\oplusk=i}A_jB_k\]其中\(\oplus=or,and,xor\)。类似FFT的思路,对于序列\(a\)构造新序列\(fmt(a)\),使得满足\(fmt(a*b)_i=fmt(a)_i\timesfmt(b)_i\)在位运算情况下,\(fmt(a)_i\)均可以表达成关于序列\(a\)的可逆线性变换,即......
  • 深度学习-卷积神经网络-dropout-图像增强-优化器-45
    目录1.dropout2.数据增强3.优化器1.dropout使用L1和L2正则去限制神经网络连接的weights权重在深度学习中,最流行的正则化技术,它被证明非常成功,即使在顶尖水准的神经网络中也可以带来1%到2%的准确度提升,这可能乍听起来不是特别多,但是如果模型已经有了95%的准确率,获......
  • 深度学习-卷积神经网络-经典的卷积神经网络-梯度消失-44
    目录1.什么是梯度消失1.什么是梯度消失在梯度下降中,随着算法反向反馈到前面几层,梯度会越来越小,最终,没有变化,这时或许还没有收敛到比较好的解,这就是梯度消失问题,梯度爆炸或者消失!!!1,神经网络损失函数非凸的损失函数,逐步的减小步长,或者叫动态调整学习率2,梯度爆炸的解决,使用梯度......
  • 【数论】卷积反演大集合
    不知道为啥脑抽要学数论,骂声一片中发现数论还没入门(悲)。1.狄利克雷卷积与数论函数1.1数论函数定义:数论函数为值域为整数的函数。简单数论函数:\(I(n)\),恒等函数,恒等为\(1\)。\(e(n)\),元函数,卷积中的单位元,若\(n=1\),\(e(n)=1\)。否则为\(e(n)=0\)。\(id(n)\),单位函数,\(......
  • 深度学习-卷积神经网络基础2-43
    目录1.池化层2.CNN的一般架构3.经典的LeNet4代码5代码21.池化层为什么要有池化层?目标就是降采样subsample,shrink,减少计算负荷,内存使用,参数数量(也可防止过拟合)正如卷积神经网络一样,在池化层中的每个神经元被连接到上面一层输出的神经元,只对应一小块感受野的区域。我们必......
  • 快速沃尔什变换与子集卷积
    前置知识:FFT(快速傅里叶变换)。快速沃尔什变换LuoguP4717【模板】快速莫比乌斯/沃尔什变换(FMT/FWT)快速沃尔什变换(FastWalsh–Hadamardtransform)解决二进制运算下的卷积。给定序列\(f,g\),求以下三个序列\(A,B,C\):\[A_i=\sum_{j\operatorname{or}k=i}f_j\timesg......
  • 机器学习中一维卷积的作用是什么
    一维卷积在机器学习中的应用特别适合处理时间序列数据或者是一维信号数据。其作用主要体现在以下几个方面:特征提取:一维卷积通过在数据上滑动一个较小的窗口(卷积核),并计算窗口内数据的加权和(可能还包括偏置项),从而在局部区域内提取特征。这种操作有助于识别一维数据中的局部模式和特征......
  • 深度学习网络的感受野与卷积核
    https://www.bilibili.com/read/cv27451493/?jump_opus=1https://zhuanlan.zhihu.com/p/484653541?utm_id=0一般认为,网络越深,卷积核越大,感受野也就越大。同时,也会丢失一定的小尺度捕捉能力。在《Residualnetworksbehavelikeensemblesofrelativelyshallownetworks》中,说......
  • 卷积神经网络理解(5)
    1、参数计算         在一次卷积过程中,卷积核进行共享,即每个通道采用一个卷积核即可。 在Pytorch的nn模块中,封装了nn.Conv2d()类作为二维卷积的实现。参数如下图所示    in_channels:输入张量的channels数out_channels:输出张量的channels数kernel_s......
  • 积性函数与狄利克雷卷积
    积性函数【定义】若对于一个数论函数\(f\),有:对\((a,b)=1\),有\(f(a\timesb)=f(a)\timesf(b)\),称\(f\)是一个积性函数。特别地,若对于任意数\(a,b\),有\(f(a\timesb)=f(a)\timesf(b)\),称\(f\)是一个完全积性函数。积性函数举例:欧拉函数,因数个数,因数和……完......