• 25李沐动手学深度学习v2/填充和步幅


    填充相同的高度和宽度,在所有侧边添加1个像素

    import torch
    from torch import nn
    
    def comp_conv2d(conv2d,X):
        # 所有侧边添加1个像素
        X=X.reshape((1,1)+X.shape)
        Y=conv2d(X)
        # torch.Size([1, 1, 8, 8]) 1 通道数,1 batch_size
        Y.shape
        return Y.reshape(Y.shape[2:])
    
    # 1输入通道数,1输出通道数,核大小3*3。padding是超参数,padding=1,上下左右都1像素
    conv2d=nn.Conv2d(1,1,kernel_size=3,padding=1)
    X=torch.rand(size=(8,8))
    # 8+2-3+1=8,8+2-3+1=8
    comp_conv2d(conv2d,X).shape
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    torch.Size([8, 8])
    
    • 1

    填充不同的高度和宽度

    # padding 上下各2行 左右各1列
    conv2d=nn.Conv2d(1,1,kernel_size=(5,3),padding=(2,1))
    # 8+2+2-5+1=8,8+1+1-3+1=8
    comp_conv2d(conv2d,X).shape
    
    • 1
    • 2
    • 3
    • 4
    torch.Size([8, 8])
    
    • 1

    步幅的宽度和高度都是2

    conv2d=nn.Conv2d(1,1,kernel_size=3,padding=1,stride=2)
    # (8+1+1-3+2)/2=4,(8+1+1-3+2)/2=4
    comp_conv2d(conv2d,X).shape
    
    • 1
    • 2
    • 3
    torch.Size([4, 4])
    
    • 1
    conv2d=nn.Conv2d(1,1,kernel_size=(3,5),padding=(0,1),stride=(3,4))
    # (8+0+0-3+3)/3=2,(8+1+1-5+4)/4=2
    comp_conv2d(conv2d,X).shape
    
    • 1
    • 2
    • 3
    torch.Size([2, 2])
    
    • 1

    总结

    • padding,防止输出shape太小
    • stride,防止输出shape太大
    • (输入行数+padding*2-kernel行数+stride)/stride
    • 通常,填充总量=核-1

    query

    超参数,核大小 填充 步幅 影响力大小

    • 答:通常,填充总量=核-1
    • 答:通常,步幅=1,最好,可以看到更多的东西
    • 答:不想要深的网络,通常,步幅=2

    构造深度为100层的神经网络

    • 答:224x224的输入,把5个步幅为2的卷积层插到神经网络中即可

    为什么卷积核的边长取奇数的多

    • 答:通常,填充总量=核-1。填充之后不改变对称性

    核大小 填充 步幅超参数调节

    • 答:神经网络架构已经确定了这些超参数,一般不用调节

    使用经典的网络结构

    • 答:对的,优先考虑ResNet系列,参照经典网络做改变

    使用小的卷积核,视野小

    • 答:卷积核虽然小,但是每次看一局部信息,进而综合了局部信息,当神经网络很深时,往上抽象看到了全局信息

    让超参数也一起参与学习

    • 答:NAS,现在是有钱人的游戏

    多层卷积后信息丢失

    • 答:机器学习相当于极端压缩算法,一定会丢失信息的,抽象算法

    多层3x3卷积类似于少层5x5卷积

    • 答:效果类似,但计算量随着卷积核变大而指数增加

    简单的神经网络

    • 答:更容易流行。使用固定大小的核更简单

    纹理特征

    • 答:不同的卷积核提取不同的纹理特征
  • 相关阅读:
    WebRTC源码之音频设备播放流程源码分析
    探秘 | 简说IP地址以及路由器的功能究竟是什么?
    165 pbi-utils 使用文档
    目标检测数据集格式转换:txt格式转换为xml格式(以VisDrone数据集为例)
    关于Nginx跨域配置的一些问题,详解如何正确的配置跨域
    QoS理论讲解
    股票数据分析应用之可视化图表组件
    go开发之个人微信的开发
    机器学习前沿:改进自身缺陷,满足新战略
    《Python进阶系列》二十八:mmap模块(处理大文本)
  • 原文地址:https://blog.csdn.net/baidu_35805755/article/details/126914471