Keras:ValueError:检查输入时出错

时间:2018-07-03 13:03:13

标签: python pandas numpy tensorflow keras

我的熊猫数据帧的长度为7490042,如下所示:

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

pandas数据框中的每个值都是长度为50的numpy数组。 现在,我像这样提取它:

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 :(得分:1)

您需要先重塑功能,然后再将其输入LSTM网络。 LSTM层采用3维输入,对应于(batch_size,时间步长,特征)。这意味着单个观测必须是二维的(时间步长,特征)

在您的情况下,如果转换正确完成,则单个观测值为1维(50):整个数据集维为:(7499042,50)。 您必须在使用之前重新调整输入内容:

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

万一Pandas没有将您的初始功能转换为2d DataFrame,您必须在执行上面的代码之前执行此操作。