【问题标题】:Does BatchNormalization count as a layer in a network?BatchNormalization 算作网络中的一层吗?
【发布时间】:2021-03-17 15:58:27
【问题描述】:

BatchNormalizationLayer 是否被视为神经网络中的一个层? 例如,如果我们说 Resnet50 有 50 层,那是否意味着其中一些层可能是批标准化层?

在 Keras 中构建模型时,我将其视为额外的,类似于 dropout 层或添加“激活层”时。但是 BatchNormalization 有可训练的参数,所以......我很困惑

【问题讨论】:

    标签: neural-network conv-neural-network


    【解决方案1】:

    在深度学习文献中,X 层网络只是指使用构成网络表示能力的可学习层。
    不考虑激活层、归一化层(如 NLR、BatchNorm 等)、下采样层(如 Maxpooling 等)。

    统计CNNRNNFC等负责网络表征能力的层。

    【讨论】:

    • 这就是我的问题所在。我看到 BatchNorm 在 Keras 中有可训练的参数。这是如何运作的?谢谢你丽卡!
    • 它具有专门用于标准化的可学习参数 gamma 和 beta。它们不会增加网络的表示能力,它们使训练更容易!这么说吧,如果你只在网络中使用 BN 层,你会学到任何描述输入数据的特征吗?另一方面,如果您在网络中使用任何形式的层,例如 CNN、FC 等,您确实可以获得一组以新形式表示您的输入数据的特征。这是文献中所考虑的。
    【解决方案2】:

    这实际上取决于您定义“层”的精确程度。这可能因作者而异。

    对于您的 ResNet 示例,很清楚:在第 3.4 节 实施中,您将描述网络,上面写着:

    我们在每次卷积之后立即采用批量归一化 (BN),并且 在激活之前,[...]。

    因此卷积和批量归一化被视为单层。图 3. 论文中展示了 ResNet34 的图片,其中甚至没有明确显示批归一化层,层数总计为 34。

    因此,总而言之,ResNet 论文并未将批量归一化视为额外层。

    Further Keras 可以很容易地为许多 pretrained models 检查这些内容,例如:

    import tensorflow as tf
    resnet = tf.keras.applications.ResNet50()
    print(resnet.summary())
    

    【讨论】:

      猜你喜欢
      • 2019-11-26
      • 2020-05-07
      • 2019-11-04
      • 2018-01-08
      • 2020-11-22
      • 2022-12-10
      • 2012-05-19
      • 2018-11-24
      • 2017-09-19
      相关资源
      最近更新 更多