Keras: ValueError: Ошибка при проверке ввода - PullRequest
0 голосов
/ 03 июля 2018

У меня есть датафрейм панд длиной 7499042, например:

'X'          'y'
[0.1,0.2...] 0.2
[0.3,0.4,..] 0.3
.
.

каждое значение в фрейме данных pandas - это пустой массив длиной 50. Теперь я извлекаю это так:

input = df['X'].values

У меня есть такие слои:

main_input = Input(shape=(50,1), name='main_input')    
lstm_out=LSTM(32,activation='tanh',recurrent_activation='sigmoid',return_sequences=True)
mean_pooling=AveragePooling1D(pool_size=2,strides=2,padding='valid')

Но когда я передаю свой вклад в это во время тренировки. Показывает ошибку:

ValueError: Error when checking input: expected main_input to have 3 dimensions, but got array with shape (7499042, 1)

Форма ввода, которую он показывает, - (7499042,). Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 03 июля 2018

Вам необходимо изменить свои функции, прежде чем передавать их в сеть LSTM. Слой LSTM принимает трехмерный ввод, соответствующий (batch_size, timesteps, features). Это означает, что одно наблюдение должно быть двухмерным (временные шаги, особенности)

В вашем случае одно наблюдение является одномерным (50,): весь размер набора данных: (7499042, 50), если преобразование было выполнено правильно. Вы должны изменить свой ввод перед использованием:

input = df['X'].values
input = input.reshape(input.shape[0] , input.shape[1] , 1)

в случае, если Pandas не преобразовал вашу исходную функцию в 2d DataFrame, вы должны сделать это перед выполнением вышеуказанного кода.

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