Запуск Keras model.fit () с одинаковыми настройками возвращает разные результаты - PullRequest
0 голосов
/ 23 января 2019

У меня есть обученная модель, сохраненная в model_path, и я хочу продолжить ее обучение на фиксированном наборе данных несколько раз, каждый раз начиная с состояния, в котором она была сохранена. Если я выполню одну и ту же оптимизацию для одного и того же фиксированного набора обучающих данных с явным определением генераторов случайных начальных чисел для Python, Numpy и Tensorflow, я ожидаю те же результаты в том же наборе тестов. Я следовал инструкциям Keras FAQ по воспроизводимым результатам, и это, похоже, не помогло.

Моя модель представляет собой стопку флюса и линейный слой сверху. Нет нормализации партии или отсева. Единственным источником случайности может быть инициализация веса He, но она на самом деле не имеет места, поскольку загружаемая мной модель уже обучена.

for i in range(3): 
    # set random seeds
    tf.set_random_seed(42)
    np.random.seed(42)
    random.seed(42)
    # get training and test data
    x_test = scaler.transform(df.iloc[150:350,0:12].values)
    y_test = df.iloc[150:350,12].values
    X = scaler.transform(df.iloc[0:150,0:12].values)
    Y = df.iloc[0:150,12].values
    # load and fit model
    model = load_model(model_path)
    model.compile(loss='mae', optimizer='adam')
    _ = model.fit(X, Y, batch_size=150, epochs=20, verbose=0, shuffle=False)
    # evaluate model
    mae = model.evaluate(x=x_test, y=y_test, steps=test_amount//50, verbose=0)
    print('MAE: ', mae)
    K.clear_session()
    tf.reset_default_graph()

Что приводит к:

MAE:  12.2394380569458
MAE:  12.65652847290039
MAE:  9.243626594543457

Кроме того, я не работаю на GPU. Что скрывает эти различия?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...