【问题标题】:Batchnorm2d Pytorch - Why pass number of channels to batchnorm?Batchnorm2d Pytorch - 为什么将通道数传递给 batchnorm?
【发布时间】:2020-09-14 09:53:20
【问题描述】:

为什么我需要将之前的通道数传递给 batchnorm? batchnorm 应该对批处理中的每个数据点进行归一化,那为什么还需要通道数呢?

【问题讨论】:

    标签: machine-learning deep-learning pytorch batch-normalization batchnorm


    【解决方案1】:

    批量归一化具有可学习的参数,因为它包含仿射变换。

    来自nn.BatchNorm2d的文档:

    均值和标准差是在小批量上按维度计算的,γ 和 β 是大小为 C 的可学习参数向量(其中 C 是输入大小)。默认情况下,γ的元素设置为1,β的元素设置为0。

    由于规范是按通道计算的,因此参数 γ 和 β 是大小为 num_channels 的向量(每个通道一个元素),这会导致每个通道的单独缩放和移位。与 PyTorch 中的任何其他可学习参数一样,它们需要以固定大小创建,因此您需要指定通道数

    batch_norm = nn.BatchNorm2d(10)
    
    # γ
    batch_norm.weight.size()
    # => torch.Size([10])
    
    # β
    batch_norm.bias.size()
    # => torch.Size([10])
    

    注意:设置affine=False不使用任何参数,也不需要通道数,但仍然需要它们,以便有一个一致的界面。

    【讨论】:

    • 啊,好吧!谢谢你解释清楚的启示:D
    猜你喜欢
    • 2017-05-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2021-11-16
    • 2019-04-11
    • 1970-01-01
    • 2020-03-12
    相关资源
    最近更新 更多