Разная точность проверки на разных тренировках в keras

Я обучил модель keras на Mnist, сохранив одинаковые гиперпараметры обучения и модели. Данные обучения и проверки были точно такими же. Я получил пять различных значений точности — 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

person user239457    schedule 23.01.2019    source источник
comment


Ответы (1)


Это может быть только потому, что веса моделей каждый раз генерируются случайным образом. Предположим, я тренирую 2 модели с одинаковыми данными и гиперпараметрами. Поскольку изначально они имеют разный вес, их потери и точность будут различаться. Но через определенное количество эпох они обе сойдутся в одной и той же точке, где точность и потери обеих моделей кажутся равными. Эта точка может быть минимумом потерь, поскольку данные одинаковы. В противном случае это может быть точка, из которой обе модели встают на один и тот же путь к конвергенции.

В вашем случае, возможно, обучение на большее количество эпох принесло бы равные потери и точность для всех моделей.

person Shubham Panchal    schedule 23.01.2019