keras归一化函数中的轴参数- keras.utils.normalization()

问题描述 投票:1回答:1

我花了很多时间来理解 keras.utils.normalization() 函数中的轴参数是如何工作的。谁能给我解释一下,利用np.array的概念,做一个随机的(2,2)np数组,并解释一下归一化对于不同轴的实际作用。

python tensorflow keras data-science normalization
1个回答
0
投票

让我们考虑一个 2*2 Numpy Array,

x = np.array([[1,2],
              [3,4]])

Axis = 0 表示该操作已完成。Row-wise. 代码与 Axis = 0:

x_norm_rows_axis = tf.keras.utils.normalize(x, axis= 0)
print(x_norm_rows_axis)

上述代码的输出是:

[[0.31622777 0.4472136 ]
 [0.9486833  0.89442719]]

輸出為: 輸出為: 輸出為: 輸出為: Axis = 0 可详细说明如下。

print('x_norm_rows_axis[0][0] = {}'.format(1/np.sqrt(1 ** 2 + 3 ** 2)))
print('x_norm_rows_axis[0][1] = {}'.format(2/np.sqrt(2 ** 2 + 4 ** 2)))
print('x_norm_rows_axis[1][0] = {}'.format(3/np.sqrt(1 ** 2 + 3 ** 2)))
print('x_norm_rows_axis[1][1] = {}'.format(4/np.sqrt(2 ** 2 + 4 ** 2)))

以上的产出 Print 语句如下图所示。

x_norm_rows_axis[0][0] = 0.31622776601683794
x_norm_rows_axis[0][1] = 0.4472135954999579
x_norm_rows_axis[1][0] = 0.9486832980505138
x_norm_rows_axis[1][1] = 0.8944271909999159

Axis = 1 表示该操作已完成 Column-wise. 代码与 axis = 1. 在这种情况下,由于我们只有2个维度,我们可以将其视为 axis = -1 也是。

x_norm_col_axis = tf.keras.utils.normalize(x, axis= 1)
print(x_norm_col_axis)

上述代码的输出是:

[[0.4472136  0.89442719]
 [0.6        0.8       ]]

这段代码的输出是: axis = 1axis = -1 (在这种情况下)可以阐述如下所示。

print('x_norm_col_axis[0][0] = {}'.format(1/np.sqrt(1 ** 2 + 2 ** 2)))
print('x_norm_col_axis[0][1] = {}'.format(2/np.sqrt(2 ** 2 + 1 ** 2)))
print('x_norm_col_axis[1][0] = {}'.format(3/np.sqrt(4 ** 2 + 3 ** 2)))
print('x_norm_col_axis[1][1] = {}'.format(4/np.sqrt(3 ** 2 + 4 ** 2)))

上述的输出 Print 语句如下图所示。

x_norm_col_axis[0][0] = 0.4472135954999579
x_norm_col_axis[0][1] = 0.8944271909999159
x_norm_col_axis[1][0] = 0.6
x_norm_col_axis[1][1] = 0.8

要了解如何 Order 参数的作用,请参考这个 Stack Overflow答案.

希望对大家有所帮助。学习愉快!

© www.soinside.com 2019 - 2024. All rights reserved.