【问题标题】:ValueError: Error when checking input: expected dense_1_input to have shape (180,) but got array with shape (1,)ValueError:检查输入时出错:预期dense_1_input的形状为(180,),但数组的形状为(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

标签: python tensorflow keras deep-learning


【解决方案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°。 你有多少个标签?

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 2020-11-22
      • 1970-01-01
      • 2018-10-24
      • 2018-09-30
      • 2019-10-22
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      相关资源
      最近更新 更多