Почему моя модель LSTM повышает MAX_SEQ_LENGHT <= 0 при прогнозировании с новым вводом той же формы?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему моя модель LSTM повышает MAX_SEQ_LENGHT <= 0 при прогнозировании с новым вводом той же формы?

Сообщение Anonymous »

Я обучаю многочасочную модель 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»