keras utils标准化的目的是什么?

时间:2018-09-29 19:22:54

标签: python machine-learning neural-network keras

我想在将训练集传递给我的NN之前对其进行归一化,所以我尝试keras.utils.normalize()而不是手动进行(减去均值并除以std),我对获得的结果感到惊讶。

运行此:

r = np.random.rand(3000) * 1000
nr = normalize(r)
print(np.mean(r))
print(np.mean(nr))
print(np.std(r))
print(np.std(nr))
print(np.min(r))
print(np.min(nr))
print(np.max(r))
print(np.max(nr))

导致的结果:

495.60440066771866
0.015737914577213984
291.4440194021
0.009254802974329002
0.20755517410064872
6.590913227674956e-06
999.7631481267636
0.03174747238214018

不幸的是,docs并未解释幕后发生的事情。您能解释一下它的功能吗?如果我应该使用keras.utils.normalize而不是我应该手动完成的操作?

1 个答案:

答案 0 :(得分:3)

这不是您期望的那种标准化。实际上,it在后台使用np.linalg.norm()来使用Lp范数归一化给定数据:

./***/***/

例如,在默认情况下,它将使用L2归一化对数据进行归一化(即元素平方的总和等于1)。

您可以使用此功能,或者如果您不想手动进行均值和标准差归一化,则可以使用sklearn中的StandardScaler()甚至是MinMaxScaler()