Классификация последовательности с LSTM, Ошибка при проверке ввода - PullRequest
0 голосов
/ 10 июля 2019

Я строю свою первую нейронную сеть с LSTM, и у меня есть ошибка в размере ввода.

Я предполагаю, что ошибка во входных параметрах, в размере, измерении, но я не могу понятьошибка.

print df.shape

data_dim = 13
timesteps = 13
num_classes = 1
batch_size = 32

model = Sequential()
model.add(LSTM(32, return_sequences = True, stateful = True,
               batch_input_shape = (batch_size, timesteps, data_dim)))

model.add(LSTM(32, return_sequences = True, stateful = True))

model.add(LSTM(32, stateful = True))

model.add(Dense(1, activation = 'relu'))

#Compile.
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.summary()

#Fit.
history = model.fit(data[train], label[train], epochs = iteraciones, verbose = 0)

#Eval.
scores = model.evaluate(data[test], label[test], verbose = 0)

#Save.
cvshistory.append(history)
cvscores.append(scores[1] * 100)

форма:

(303, 14)

summary:
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_19 (LSTM)               (32, 13, 32)              5888      
_________________________________________________________________
lstm_20 (LSTM)               (32, 13, 32)              8320      
_________________________________________________________________
lstm_21 (LSTM)               (32, 32)                  8320      
_________________________________________________________________
dense_171 (Dense)            (32, 1)                   33        
=================================================================
Total params: 22,561
Trainable params: 22,561
Non-trainable params: 0
_________________________________________________________________

Вывод ошибки говорит мне следующее:

---> 45   history = model.fit(data[train], label[train], epochs = iteraciones, verbose = 0)

ValueError: Error when checking input: expected lstm_19_input to have 3 dimensions, but got array with shape (226, 13)

1 Ответ

0 голосов
/ 10 июля 2019

LSTM требует ввода формы (batch_size, timestep, feature_size). Вы передаете только два объекта измерения. Начиная с timesteps=13, вам нужно добавить еще одно измерение для ввода.

Если данные являются массивом NumPy, то: data = data[..., np.newaxis] должен это сделать.

Форма данных теперь будет (batch_size, timesteps, feature), а именно. (226, 13, 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...