TensorFlow中规范化函数的作用是什么?

时间:2018-12-14 19:55:10

标签: python tensorflow machine-learning

我学习了机器学习,并试图建立一个简单的张量流模型。当我尝试训练模型时,我的损失数约为10。

5s 83us/step - loss: 9.6847 - acc: 0.3971

型号代码:

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])

model.compile(optimizer=tf.train.AdamOptimizer(),
          loss='sparse_categorical_crossentropy',
          metrics=['accuracy'])

model.fit(x_train, y_train, epochs=3)

但是随后我使用此代码对数据集进行了归一化

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

然后损失降到小于1。

问题是,如何产生如此巨大的影响?

1 个答案:

答案 0 :(得分:1)

“问题是,如何产生如此巨大的影响?” 它将训练数据标准化为数据Implementation的l2范数。这样做是为了确保没有特定的样本可以控制权重的更新方式。也请参见此question的答案。在此答案中,使用两个特征的Logistic回归示例解释了归一化的原因。