我学习了机器学习,并试图建立一个简单的张量流模型。当我尝试训练模型时,我的损失数约为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。
问题是,如何产生如此巨大的影响?
答案 0 :(得分:1)
“问题是,如何产生如此巨大的影响?” 它将训练数据标准化为数据Implementation的l2范数。这样做是为了确保没有特定的样本可以控制权重的更新方式。也请参见此question的答案。在此答案中,使用两个特征的Logistic回归示例解释了归一化的原因。