Keras: ValueError: ошибка при проверке ввода

у меня есть панды dataframe длиной 7499042, как это:

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

каждое значение в фрейме данных pandas является массивом numpy длиной 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 ответов


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

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

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

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