我正在用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.]]]
我不断收到有关稠密层尺寸的错误。我真的是神经网络编程的新手。
答案 0 :(得分:1)
问题是模型(None, 2)
的输出形状与训练模型时提供的标签数组(36020, 10, 2)
的形状不一致。您需要将标签数组的形状更改为(num_samples, 2)
,或者只是更改模型的层参数和体系结构以使其具有(None, 10, 2)
的输出形状(即与{{1保持一致) }})。关于哪种方法是正确的方法,我无法进一步评论,因为这完全取决于您正在处理的问题的实际输入和输出形状,而您在这方面没有提供任何信息。