【问题标题】:ValueError: Error when checking target: expected dense_108 to have 2 dimensions, but got array with shape (36020, 10, 2)ValueError:检查目标时出错:预期的 dense_108 有 2 个维度,但得到了形状为 (36020, 10, 2) 的数组
【发布时间】:2018-10-28 19:13:18
【问题描述】:

我正在构建一个带有Convolution1D 层的卷积神经网络。我的网络模型如下。密集层的输入似乎产生了一个形状为(36020,10,2)的数组。

#network model
cnn = Sequential()
cnn.add(Convolution1D(64, 3, border_mode="same",activation="relu",input_shape=(25,1)))
cnn.add(MaxPooling1D(pool_length=(2)))
cnn.add(Flatten())
cnn.add(Dense(128, activation="relu"))
cnn.add(Dropout(0.5))
cnn.add(Dense(2, activation="softmax"))

我试图拟合模型的数据是:

X_train=[[[1.0000000e+00]
  [3.0122564e-08]
  [1.6120090e-05]
  ...
  [0.0000000e+00]
  [9.4886076e-08]
  [3.0170717e-08]]

 [[1.0000000e+00]
  [0.0000000e+00]
  [0.0000000e+00]
  ...
  [0.0000000e+00]
  [0.0000000e+00]
  [1.2500001e-12]]

 [[1.0000000e+00]
  [0.0000000e+00]
  [0.0000000e+00]
  ...
  [0.0000000e+00]
  [0.0000000e+00]
  [3.1249999e-11]]

 ...

 [[0.0000000e+00]
  [1.0842798e-05]
  [1.0943735e-06]
  ...
  [0.0000000e+00]
  [9.6288932e-09]
  [1.3172292e-10]]

 [[0.0000000e+00]
  [2.8011250e-01]
  [8.8251436e-01]
  ...
  [0.0000000e+00]
  [4.1974179e-04]
  [3.6202004e-04]]

 [[0.0000000e+00]
  [8.3799750e-06]
  [9.5839296e-06]
  ...
  [0.0000000e+00]
  [8.8683461e-09]
  [1.0194775e-10]]]

y_train = [[[0. 1.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[0. 1.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[0. 1.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 ...

 [[1. 0.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[1. 0.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]

 [[1. 0.]
  [1. 0.]
  [1. 0.]
  ...
  [1. 0.]
  [1. 0.]
  [1. 0.]]]

我不断收到关于密集层维度的错误。我对神经网络编程真的很陌生。

【问题讨论】:

  • X_train 和 y_train 的形状是什么?
  • X_train 是 (36020,25) 而 Y_train 是 [36020,10]
  • 如果答案解决了您的问题,请接受点击答案旁边的复选标记将其标记为“已回答” - 请参阅What should I do when someone answers my question?

标签: python tensorflow machine-learning keras conv-neural-network


【解决方案1】:

问题是模型的输出形状(None, 2)与您在训练模型时提供的标签数组(36020, 10, 2)的形状不一致。您需要将标签数组的形状更改为(num_samples, 2),或者只需更改模型的层参数和架构,使其具有(None, 10, 2) 的输出形状(即与(36020, 10, 2) 保持一致)。我无法进一步评论哪种方法是正确的方法,因为这完全取决于您正在处理的问题的实际输入和输出形状是什么,而您没有提供这方面的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2019-03-25
    • 2021-06-15
    • 2019-11-13
    相关资源
    最近更新 更多