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) 的数组