【问题标题】:Is the first axis 0 or 1 in keras.layers.BatchNormalization()?keras.layers.BatchNormalization() 中的第一个轴是 0 还是 1?
【发布时间】:2021-02-10 14:00:14
【问题描述】:

我正在研究 Andrew Ng 在 Coursera 上的“Keras_Tutorial_v2a”,我对 keras.layers.BatchNormalization() 中的轴参数感到困惑。

模型的前几层是:

X_input = Input(input_shape)
X = Conv2D(32, (3, 3), strides = (1, 1), name = 'conv0')(X_input)
X = BatchNormalization(axis = 3, name = 'bn0')(X)

其中 input_shape 是数据集图像的形状:(高度、宽度、通道)。所以看起来axis = 3是指通道,但不应该是axis = 2吗?我找不到指定这一点的文档,但通常在 python 中,索引和轴从 0 开始。

因此,此函数中的任一轴都从 1 开始,或者我缺少某些东西。任何人都可以为我澄清一下吗?我敢肯定这很简单!

【问题讨论】:

    标签: keras batch-normalization


    【解决方案1】:

    在教程和 Keras/TensorFlow 代码库中,您将看到 axis = 3axis = -1。这是应该选择的,因为通道轴是 3(或最后一个,-1)。

    如果您查看原始文档,默认为-1(本质上为3rd)。

    https://www.tensorflow.org/api_docs/python/tf/keras/layers/BatchNormalization

    【讨论】:

      【解决方案2】:

      在 Keras 中,维度排序为 batch_size, height, width, channel。所以channelaxis=3。如您所说,您想选择代表您的频道的轴索引。

      【讨论】:

        猜你喜欢
        • 2015-04-02
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        • 2019-09-13
        • 2021-07-02
        • 2011-04-01
        • 2020-01-15
        • 1970-01-01
        相关资源
        最近更新 更多