У меня одна модель LSTM, как показано ниже:
model = Sequential()
model.add(Conv1D(3, 32, input_shape=(60, 12)))
model.add(LSTM(units=256, return_sequences=False, dropout=0.25))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.summary()
Каждый раз, когда я использую один и тот же набор данных для его обучения, я получаю другую модель. В большинстве случаев производительность обученной модели приемлема, но иногда бывает очень плохо. Я думаю, что во время обучения или инициализации есть некоторая случайность. Итак, как я могу все исправить, чтобы получить одну и ту же модель для каждой тренировки?






Вы можете сохранить это
from keras.models import load_model
model.save("lstm_model.h5")
И загрузите позже
model = model.load("lstm_model.h5")
Я тоже столкнулся с этой проблемой с Keras, это связано со случайным семенем, вы можете исправить свое случайное семя, как это, перед импортом Keras, чтобы вы могли получить согласованный результат.
import numpy as np
np.random.seed(1000)
import os
import random
os.environ['PYTHONHASHSEED'] = '0'
random.seed(12345)
# Also set the tf randomness to some fixed values like this if you need:
tf.set_random_seed(1234)
Это сработало для меня.
Веса инициализируются в нейронных сетях случайным образом, поэтому возможны разные результаты по дизайну. Если вы подумаете о том, как работает обратное распространение и как минимизируется функция стоимости, вы заметите, что у вас нет никакой гарантии, что ваша сеть найдет «глобальные минимумы». Исправление начального числа - это одна из идей для получения воспроизводимых результатов, но, с другой стороны, вы ограничиваете свою сеть фиксированной начальной позицией, где она, вероятно, никогда не достигнет глобальных минимумов.
Многие сложные модели, особенно LSTM, нестабильны. Вы можете посмотреть на сверточные подходы. Я заметил, что они работают почти одинаково и намного стабильнее. https://arxiv.org/pdf/1803.01271.pdf
да. Это мое текущее решение. Сохранив лучшую модель, я могу использовать ее повторно. Но я все еще хочу выяснить, откуда берется такая случайность и как я могу избежать ее в будущем.