Я работаю над моделью LSTM, и я хотел бы сохранить ее и продолжить с дополнительными данными по мере их накопления.
Моя проблема в том, что после сохранения модели и ее загрузки в следующий раз, когда я запускаю скрипт, прогноз полностью неверен, он просто имитирует введенные в него данные.
Вот инициализация модели:
# create and fit the LSTM network
if retrain == 1:
print "Creating a newly retrained network."
model = Sequential()
model.add(LSTM(inputDimension, input_shape=(1, inputDimension)))
model.add(Dense(inputDimension, activation='relu'))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=epochs, batch_size=batch_size, verbose=2)
model.save("model.{}.h5".format(interval))
else:
print "Using an existing network."
model = load_model("model.{}.h5".format(interval))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=epochs, batch_size=batch_size, verbose=2)
model.save("model.{}.h5".format(interval))
del model
model = load_model("model.{}.h5".format(interval))
model.compile(loss='mean_squared_error', optimizer='adam')
Первый набор данных, когда для переобучения задано значение 1, содержит около 10 000 записей с периодом около 3 тыс. И размером партии 5%.
Второй набор данных представляет собой однократную запись данных. как в одном ряду, снова 3k эпох и batch_size = 1
решаемые
Я неправильно перезагружал скейлер:
scaler = joblib.load('scaler.{}.data'.format(interval))
dataset = scaler.fit_transform(dataset)
Правильно:
scaler = joblib.load('scaler.{}.data'.format(interval))
dataset = scaler.transform(dataset)
fit_transform пересчитывает множители для масштабированных значений, это означает, что будет смещение от исходных данных.