Как исправить форму ввода Кераса в 3D-массив - PullRequest
0 голосов
/ 14 октября 2018

У меня есть модель Keras, которая, когда я подгоняю, не удается с этой ошибкой

> kerasInput = Input(shape=(None, 47))
> LSTM(..)(kerasInput)
...
> model.fit(realInput, ...)
ValueError: Error when checking input: expected input_1 to have 3 dimensions, but got array with shape (10842, 1)

При просмотре ввода я обнаружил, что он имеет форму (10842, 1), но для каждой строки это фактически списоксписок.Я могу проверить с помощью

> pd.DataFrame(realInput[0]).shape
(260, 47)

Как я могу исправить свою форму ввода?

При попытке со слоем keras Reshape создание модели завершается неудачно с помощью:

Model inputs must come from `keras.layers.Input` (thus holding past layer metadata), they cannot be the output of a previous non-Input layer. Here, a tensor specified as input to your model was not an Input tensor, it was generated by layer reshape_8.
Note that input tensors are instantiated via `tensor = keras.layers.Input(shape)`.
The tensor that caused the issue was: reshape_8/Reshape:0

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Как я уже говорил в комментариях.Вы должны будете убедиться, что изменили свои данные в соответствии с тем, что LSTM ожидает получить, а также убедитесь, что input_shape настроен правильно.

Я нашел этот пост весьма полезным, когда боролся с вводом в слой LSTM.Я надеюсь, что это вам тоже поможет: Изменить ввод для LSTM

0 голосов
/ 14 октября 2018
  1. Вы можете использовать метод numpy.expand_dims для преобразования фигуры в 3D.

    import numpy as np
    
    np.expand_dims(realInput,axis=0)
    
  2. Изменить слой keras

    https://keras.io/layers/core/#reshape

  3. Использовать третий параметр как 1

    # Something Similar to this
    X_train = np.reshape(X_train,(X_train.shape[0],X_train.shape[1],1))
    

Редактировать: Добавлен метод np.reshape

Ссылка на этот репозиторий: https://github.com/NilanshBansal/Stock_Price_Prediction/blob/master/Stock_Price_Prediction_20_days_later_4_LSTM.ipynb

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