Я обучаю многочасочную модель LSTM на Kaggle, используя 2x T4-графические процессоры, с несколькими входными последовательностями различных длины. Моя цель - столбец "Close". < /P>
1. Нормализация и данные: < /h2>
Я нормализую свои данные с помощью пользовательского класса нормализатора: < /p>
normalizer = Normalizer(start_data[cols])
data = normalizer.normalize()
values = data[cols].values
< /code>
2. Модель < /h2>
times = [5, 15, 30, 90] # Sequence lengths
def build_lstm_model(times, lstm_units=64, dense_units=64):
inputs = []
branches = []
for t in times:
input_t = Input(shape=(t, 4))
x = LSTM(lstm_units, return_sequences=True)(input_t)
x = Dropout(0.2)(x)
x = LSTM(lstm_units)(x)
branches.append(x)
inputs.append(input_t)
merged = concatenate(branches)
dense = Dense(128, activation="relu")(merged)
dense = Dense(dense_units, activation="relu")(dense)
residual = Dense(dense_units)(merged)
added = Add()([dense, residual])
output = Dense(1)(added)
return Model(inputs=inputs, outputs=output)
< /code>
3. Подготовка данных < /h2>
Я готовлю списки с различными продолжительностью: < /pbr /> min_len = max(times)
x_inputs = [[] for _ in times]
y = []
for i in range(min_len, len(values)):
for idx, t in enumerate(times):
x_inputs[idx].append(values[i - t:i])
y.append(values[cols.index("close")])
x_inputs = [np.array(x) for x in x_inputs] # e.g., shape (911, 90, 4)
y = np.array(y)
< /code>
4. Обучение (работа)
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
model = build_lstm_model(times)
model.compile(optimizer="adam", loss="mse", metrics=["mae"])
model.fit(x_inputs, y, epochs=2, batch_size=256)
< /code>
5. Прогнозы (ошибка)
У меня нет проблем, когда я использую данные поезда. Для последнего прогноза, я делаю: < /p>
x_inputs = [values[-t:].reshape(1, t, 4) for t in times]
prediction = model.predict(x_inputs)
< /code>
Но это бросает:
InvalidargumentError: Ошибка выполнения графа:
...
max_seq_length
Я проверяю вручную, реконструировать ноту, ноту>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -new-input
Почему моя модель LSTM повышает MAX_SEQ_LENGHT <= 0 при прогнозировании с новым вводом той же формы? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Восхождение в SEQ от NLOG, делая переменную URL SEQ, настраиваемой в NLOG.CONFIG
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Восхождение в SEQ от NLOG, делая переменную URL SEQ, настраиваемой в NLOG.CONFIG
Anonymous » » в форуме C# - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-