Keras:ValueError:检查输入时出错

Posted

技术标签:

【中文标题】Keras:ValueError:检查输入时出错【英文标题】:Keras: ValueError: Error when checking input 【发布时间】:2018-12-11 19:32:03 【问题描述】:

我有长度为 7499042 的 pandas 数据框,如下所示:

'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,)。请帮我解决这个问题。

【问题讨论】:

您能列出您用作输入的 numpy 数组的形状吗? @VatsalAggarwal 单个X的形状是(50,),输入是(7499042,) 【参考方案1】:

在将特征输入 LSTM 网络之前,您需要重塑特征。 LSTM 层采用 3 维输入,对应于 (batch_size, timesteps, features)。这意味着单个观察必须是二维的(时间步长、特征)

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

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

如果 Pandas 没有将您的初始特征转换为 2d DataFrame,您必须在执行上述代码之前执行此操作。

【讨论】:

以上是关于Keras:ValueError:检查输入时出错的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:检查输入时出错:预期 keras_layer_input 有 4 个维度,但得到了形状为 (10, 1) 的数组

ValueError:检查目标时出错:预期(keras 序列模型层)具有 n 维,但得到的数组具有形状

ValueError:检查输入时出错:预期dense_1_input的形状为(180,),但数组的形状为(1,)

ValueError:检查输入时出错:预期 lstm_1_input 具有 3 个维度,但得到的数组具有形状 (393613, 50)

Python | Keras:ValueError:检查目标时出错:预期conv2d_3有4个维度,但得到了有形状的数组(1006,5)

ValueError:检查目标时出错:预期dense_6的形状为(46,),但数组的形状为(1,)