Как использовать несколько слоев в модели ConvLSTM - PullRequest
1 голос
/ 16 мая 2019

Мне нравится проверять мою модель, используя несколько слоев модели ConvLSTM.Форма моих тренировочных данных

trainX.shape (5000, 200, 4) # testX.shape (2627, 200, 4)

Ниже приведен мой код, который отлично работает

print('trainX.shape', trainX.shape) # trainX.shape (5000, 200, 4)
print('testX.shape', testX.shape) #  testX.shape (2627, 200, 4)
# reshape into subsequences (samples, time steps, rows, cols, channels)
samples, n_features = trainX.shape[0], trainX.shape[2]
n_steps, n_length = 8, 25
trainX = trainX.reshape((samples, n_steps, 1, n_length, n_features)) # 
print('trainX.shape', trainX.shape) # (5000, 8, 1, 25, 4)
testX = testX.reshape((testX.shape[0], n_steps, 1, n_length, n_features))
print('testX.shape', testX.shape) # (2627, 8, 1, 25, 4)

# define model
model = Sequential()
model.add(ConvLSTM2D(filters=64, kernel_size=(1,3), activation='relu', input_shape=(n_steps, 1, n_length, n_features)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='softmax'))   

print(model.summary())

Сыворотка. Я пытаюсь добавить еще один слой convlstm2d, он выдает ошибку.Я думал, что когда мы добавляем еще один слой, нет необходимости вводить форму.Ниже приведен код, который я использую для добавления другого слоя.

model = Sequential()
model.add(ConvLSTM2D(filters=64, kernel_size=(1,3), activation='relu', input_shape=(n_steps, 1, n_length, n_features)))
model.add(ConvLSTM2D(filters=64, kernel_size=(1,3), activation='relu'))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='softmax'))  

Я получаю следующее значение Ошибка.

ValueError: Input 0 is incompatible with layer conv_lst_m2d_11: expected ndim=5, found ndim=4

1 Ответ

1 голос
/ 16 мая 2019

Для ConvLSTM () входная форма вашей нейронной сети [выборки, временные шаги, строки, столбцы, элементы].

Я вижу, что вы правильно вводите данные в ConvLSTM.

Попробуйте использовать return_sequences = True в первом ConvLSTM2D и return_sequences = False во втором слое ConvLSTM2D .

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