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

Posted

技术标签:

【中文标题】ValueError:检查输入时出错:预期dense_1_input的形状为(180,),但数组的形状为(1,)【英文标题】:ValueError: Error when checking input: expected dense_1_input to have shape (180,) but got array with shape (1,) 【发布时间】:2020-05-30 06:12:45 【问题描述】:

我的学习模型如下(使用 Keras)。

model = Sequential()
model.add(Dense(100, activation='relu', input_shape = (X_train.shape[0],)))
model.add(Dense(500, activation='relu'))
model.add(Dense(2, activation='softmax'))

我的输入数据 X_train 是一个形状为 (180,) 的数组,对应的包含标签的 y_train 也是一个形状为 (180,) 的数组。我尝试编译和拟合模型如下。

model.compile(loss="sparse_categorical_crossentropy",
             optimizer="adam",
             metrics=['accuracy'])

model.fit(X_train, y_train, epochs = 200)

运行model.fit()时遇到如下错误:

ValueError: Error when checking input: expected dense_1_input to have
shape (180,) but got array with shape (1,)

我不确定自己做错了什么,因为我对深度学习还很陌生。任何帮助表示赞赏。谢谢。

【问题讨论】:

X_train的大小是多少 @ShubhamShaswat 180 【参考方案1】:

在您的情况下,第一层中定义的 input_shape 应该是(1,)

X_train.shape[0]是样本的数量,每个样本的形状为(1,)

此外,您对 fit 函数的调用将不起作用,因为您的输出具有形状 (2,) (Dense(2)) 而每个目标样本的形状是 (1,)(其中有 180 个)。

【讨论】:

【参考方案2】:

正如@Thomas Schillaci 所写,问题在于,如果您编写X_train.shape[0],您将考虑数据集的样本数量。但是在那一行代码想知道你有多少特征,所以你必须改变X_train.shape[1]才能有输入的n°。 你有多少个标签?

【讨论】:

以上是关于ValueError:检查输入时出错:预期dense_1_input的形状为(180,),但数组的形状为(1,)的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:检查输入时出错:预期的dense_26_input具有形状(45781,)但得到的数组具有形状(2,)

ValueError:检查输入时出错:预期 input_1 有 4 个维度,但得到的数组具有形状(无、无、无)

model.fit 给出 ValueError :检查输入时出错:预期的 conv2d 得到了形状为 () 的数组

ValueError:检查输入时出错:预期dense_11_input 具有3 维,但得到了形状为(0, 1) 的数组

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

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