Почему LSTM Output_shape отличается от input_shape - PullRequest
1 голос
/ 01 июня 2019

У меня есть многослойная модель LSTM;Моя проблема в том, что первый слой имеет другой output_shape (различное количество объектов) от входной формы.Из-за этого я не могу соответствовать модели;ошибка выбрасывает.Можете ли вы объяснить, почему это происходит, и любое решение будет высоко ценится.

trainingModel = keras.Sequential()

print('training_batch_size : ',training_batch_size, 'DataX.shape[1] : ',trainingDataX.shape[1],'DataX.shape[2] : ', trainingDataX.shape[2])

trainingModel.add(keras.layers.LSTM(numberOfNeurons
                    , batch_input_shape=(training_batch_size, trainingDataX.shape[1], trainingDataX.shape[2])
                    , return_sequences=True
                    , stateful=True
                    , dropout = keyDropOut))

for idx in range(numberOfLSTMLayers - 1):

    trainingModel.add(keras.layers.LSTM(
        numberOfNeurons
        , return_sequences= True
        , dropout = keyDropOut * (idx +1)
        ))

trainingModel.compile(optimizer='adam',loss='mean_squared_error')#,metrics=['accuracy'])

#Model Layer Shapes ========================
for layer in trainingModel.layers:

    print('Input shape', layer.input_shape)
    print('Output shape', layer.output_shape)



Output
===============
training_batch_size :  96 trainingDataX.shape[1] :  10 trainingDataX.shape[2] :  4
Model Layer Shapes
Input shape (96, 10, 4)
Output shape (96, 10, 5) *<<<THIS IS MY PROBLEM
Input shape (96, 10, 5)
Output shape (96, 10, 5)
Input shape (96, 10, 5)
Output shape (96, 10, 5)


Finally when I fit the model, it trhows error like:

ValueError: A target array with shape (2880, 10, 4) was passed for an output of shape (96, 10, 5) while using as loss `mean_squared_error`. This loss expects targets to have the same shape as the output

1 Ответ

1 голос
/ 01 июня 2019

Отвечая на мой собственный вопрос, как я его решил: Первый уровень LSTM должен иметь число нейронов = количество функций;т.е. в первом слое должно быть только 4 нейрона, где я использовал 5.

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