喀拉斯邦不同培训课程中不同的验证准确性

时间:2019-01-23 05:32:52

标签: keras neural-network hyperparameters

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

这是代码:

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

1 个答案:

答案 0 :(得分:1)

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

  

在您的情况下,也许训练更多的纪元会给所有模型带来同等的损失和准确性。