具有keras的1D卷积网络,输入大小错误

时间:2017-09-19 13:49:45

标签: python-3.x keras conv-neural-network keras-layer

我正在尝试为我的数据集构建卷积神经网络。我的训练数据集包含1209个示例,每个示例包含800个功能。

以下是代码的哪一部分:

model = Sequential()
model.add(Conv1D(64, 3, activation='linear', input_shape=(1209, 800)))
model.add(GlobalMaxPooling1D())
model.add(Dense(1, activation='linear'))
model.compile(loss=loss_type, optimizer=optimizer_type, metrics=[metrics_type])
model.fit(X, Y, validation_data=(X2,Y2),epochs = nb_epochs, 
batch_size = batch_size,shuffle=True)

编译此代码时,出现以下错误:

Error when checking input: expected conv1d_25_input to have 3 dimensions, 
but got array with shape (1209, 800)

所以我添加了一个维度,这就是我所做的:

X = np.expand_dims(X, axis=0)
X2 = np.expand_dims(X2, axis=0)

然后我收到了这个错误:

ValueError: Input arrays should have the same number of samples as target arrays. 
Found 1 input samples and 1209 target samples.

我的训练数据现在有这样的形状(1,1209,800),它应该是别的吗?

非常感谢您阅读本文。

1 个答案:

答案 0 :(得分:1)

不应在轴0上展开X上的尺寸,而应在轴2上展开。因此,您需要X = np.expand_dims(X, axis=0)而不是X = np.expand_dims(X, axis=2)

之后,X的形状应为(1209,800,1),然后您应在第一层指定input_shape=(800, 1)