在 keras 的不同培训课程中,验证精度不同



我在 Mnist 上训练了一个 keras 模型,保持训练和模型超参数相同。训练和验证数据完全相同。在不同的培训课程中,我得到了五种不同的精度 - 0.71、0.62、0.59、0.52、0.46。该模型每次都从头开始训练 8 个时期

这是代码:

def train():
    model = Sequential()
    model.add(Dense(32, input_dim=784))
    model.add(Dense(10, activation="softmax"))
    model.compile(loss='categorical_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])
    model.fit(x_train, y_train, batch_size=32, epochs=8, verbose=0)
    results = model.evaluate(x_test, y_test, verbose=0)
    print(results[1])

for i in range(5):
    print(i)
    train()

结果:

0
2019-01-23 13:26:54.475110: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
0.7192
1
0.6223
2
0.5976
3
0.5223
4
0.4624

这可能只是因为模型的权重每次都是随机生成的。假设,我使用相同的数据和超参数训练 2 个模型。由于它们最初具有不同的重量,因此它们的损失和准确性会有所不同。但是,在一定数量的时期之后,它们都会收敛在两个模型的精度和损失似乎相等的同一点。该点可能是损失的最小值,因为数据是相同的。否则,这可能是两个模型获得相同趋同路径的点。

在您的情况下,也许训练更多的 epoch 会给所有模型带来相同的损失和精度。

最新更新