【问题标题】:What does keras normalize axis argument does?keras 规范化轴参数有什么作用?
【发布时间】:2024-01-24 06:10:02
【问题描述】:

我是深度学习的初学者,我正在研究 keras 中的 mnist 数据集。

我使用归一化作为

tf.keras.utils.normalize(x_train, axis = 1)

我不明白轴参数是什么意思。你能帮我解决这个问题吗?

【问题讨论】:

    标签: python tensorflow keras deep-learning mnist


    【解决方案1】:

    normalize 函数只是执行常规标准化以提高性能:

    归一化是对原始范围内的数据进行重新缩放,因此 所有值都在 0 和 1 的范围内。

    在另一篇文章中对轴参数有一个很好的解释:

    What is the meaning of axis=-1 in keras.argmax?

    例如:

    您的数据具有某种形状 (19,19,5,80)。这意味着:

    • 轴 = 0 - 19 个元素
    • 轴 = 1 - 19 个元素
    • 轴 = 2 - 5 个元素
    • 轴 = 3 - 80 个元素

    另外,对于那些想要更深入的人,在 GitHub 上有来自 Keras 的作者 François Chollet 的解释:

    • 对于密集层、所有 RNN 层和大多数其他类型的层, 你应该使用默认的axis=-1,
    • 对于 Convolution2D 层 使用 dim_ordering=“th”(默认),使用 axis=1,
    • 对于 Convolution2D dim_ordering=“tf”的图层,使用axis=-1(即默认值)。

    https://github.com/fchollet/keras/issues/1921

    【讨论】:

    • 快速跟进,我正在尝试对具有两个通道的频谱图进行深度学习。我有一个形状为 (50, 50, 60, 2) 的张量。我想标准化每个频谱图和每个通道(所以沿着 (:, 50, 60, :) 轴。当我做 normalize(tens[: , :, :, 0], axis=0)[0][0] == normalize(tens[0, :, :, 0])[0] 我得到的都是 False。为什么会这样?它们不应该一样吗?
    【解决方案2】:

    keras.utils.normalize() 函数 callsnumpy.linalg.norm() 计算范数,然后对输入数据进行归一化。给定的axis 参数因此被传递给norm() 函数以计算沿给定轴的范数。

    【讨论】:

      最近更新 更多