Изменение формы для LSTM в Керасе - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь создать LSTM AutoEncoder, но у меня возникают некоторые проблемы в процессе формирования данных из-за соответствия потребностям LSTM.Поскольку я тренируюсь в пакетах, которые я генерирую в цикле окон моего временного ряда, код выглядит следующим образом:

X_batch = np.array(file.loc[window * WINDOWS_SIZE:(window + 1) * WINDOWS_SIZE - 1], dtype="f")
print(X_batch.shape)
X_batch = np.reshape(1, WINDOWS_SIZE, cluster_feature_size)
print(X_batch.shape)
history = model.fit(X_batch, X_batch, epochs=1, verbose=False)

Мои пакеты имеют форму 48 точек данных (WINDOWS_SIZE) и 45 метрик (переменная cluster_feature_size).Я прочитал, что мне нужно изменить свои данные в следующем формате (примеры, временные шаги, функции), но я где-то терплю неудачу и пропускаю некоторую информацию.Я рассуждаю, что 1 образец - 1 партия, в пакете у меня 48 точек данных, поэтому я поставил 48 временных шагов и, наконец, учитывая количество метрик временных рядов, которые у меня есть в пакете.Что-то не так?

Чертеж модели архитектуры, которую я построил до сих пор, таков:

model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(WINDOWS_SIZE, cluster_feature_size)))
model.add(RepeatVector(WINDOWS_SIZE))
model.add(Dense(1))
model.add(LSTM(100, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(1)))

Я следовал интерактивному руководству по созданию этой модели и до сих пор не углубляюсь вэто так концептуально, я хотел сначала иметь возможность просто запустить модель.

При изменении формы я получаю следующую ошибку:

(48, 45)
---> 17 X_batch = np.reshape(1, WINDOWS_SIZE, cluster_feature_size)
ValueError: cannot reshape array of size 1 into shape (48,)

Заранее спасибо за ваши советы идайте мне знать, если вопрос нужно отредактировать для ясности.

1 Ответ

0 голосов
/ 17 декабря 2018

Здесь не нужно менять форму:

import numpy as np
X = np.random.rand(48, 45)
X = np.array([X])
print(X.shape)

дает мне:

>>> (1, 48, 45)

Поскольку я не знаю больше контекста, я не могу вам больше помочь, но этодолжен решить проблему изменения формы.

...