Мне нужна помощь, чтобы соответствовать скомпилированной модели Keras.В частности, у меня проблемы с размерами входных данных.
X_train =
[[[1, 16], [1, 19], [1, 17]],
[[1, 19], [1, 17], [0, 17]],
[[1, 17], [0, 17], [1, 17]],
[[0, 17], [1, 17], [1, 18]]]
y_train =
0 1 0
1 0 0
1 0 0
0 0 1
Входные данные имеют следующие размеры:
print(len(X_train), 'train sequences')
print(len(X_test), 'test sequences')
print('X_train shape:', np.array(X_train).shape )
print('X_test shape:', np.array(X_test).shape )
print('y_train shape:', y_train.shape)
print('y_test shape:', y_test.shape)
> 4 train sequences
> 1 test sequences
> X_train shape: (4, 3, 2)
> X_test shape: (1, 3, 2)
> y_train shape: (4, 3)
> y_test shape: (1, 3)
Форма X должна интерпретироваться следующим образом:
- Образцы.Количество образцов.
- Временные шаги.Один временной шаг - это одна точка наблюдения в выборке.
- Особенности.Одна особенность - это одно наблюдение за шагом по времени.
(выборки -> 4, отметки времени -> 3, особенности -> 2)
Это модель Keras:
model = Sequential()
model.add(LSTM(
units=32, # number of units returned by LSTM
return_sequences=True,
input_shape=(timestamps,nb_features),
dropout=0.2,
recurrent_dropout=0.2
)
)
model.add(TimeDistributed(Dense(1)))
model.add(Dropout(0.2))
model.add(Flatten())
# model.add(TimeDistributedDense(1))
model.add(Dense(units=nb_classes,
activation='softmax'))
# Define a performance metric
#sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss="categorical_crossentropy",
metrics = ['accuracy'],
optimizer='adadelta')
Краткое описание модели:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_2 (LSTM) (None, 3, 32) 4480
_________________________________________________________________
time_distributed_2 (TimeDist (None, 3, 1) 33
_________________________________________________________________
dropout_2 (Dropout) (None, 3, 1) 0
_________________________________________________________________
flatten_2 (Flatten) (None, 3) 0
_________________________________________________________________
dense_4 (Dense) (None, 3) 12
=================================================================
Total params: 4,525
Trainable params: 4,525
Non-trainable params: 0
_________________________________________________________________
На этом графике видно, что входное значение равно (None, 3, 2)
, что означает, что (4, 3, 2) из X_train
должно быть в порядке,но по какой-то причине это не так.

Когда я выполняю этот код, он выдает ошибку:
history = model.fit(X_train, y_train, validation_split=0.25, epochs=500, batch_size=2, shuffle=True, verbose=0)
Ошибка:
ValueError: Ошибка при проверке ввода модели: список массивов Numpy, передаваемых в вашу модель, не соответствует размеру, ожидаемому моделью.Ожидается увидеть 1 массив (ов), но вместо этого получен следующий список из 4 массивов: [массив ([[1, 16], [1, 19], [1, 17]]), массив ([[1, 19], [1, 17], [0, 17]]), массив ([[1, 17], [0, 17], [1, 17]]), массив ([[0, 17], [1, 17], ...