我在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
答案 0 :(得分:1)
可能仅仅是因为每次都会随机生成模型的权重。假设我训练了两个具有相同数据和超参数的模型。由于它们最初具有不同的权重,因此它们的损失和准确性会有所不同。但是,经过一定时期后,它们都将在同一点收敛,这两个模型的精度和损耗似乎相等。这一点可能是损失的最小值,因为数据是相同的。否则,这可能是两个模型从相同的途径获得收敛的起点。
在您的情况下,也许训练更多的纪元会给所有模型带来同等的损失和准确性。