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

keras中不同培训课程的验证精度不同,keras,neural-network,hyperparameters,Keras,Neural Network,Hyperparameters,我在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")) mode

我在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

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

在你的例子中,也许更多的历代训练会给所有模型带来相同的损失和准确性

看见