【问题标题】:1D Convolutional network with keras, error on input size具有 keras 的一维卷积网络,输入大小错误
【发布时间】:2018-02-28 08:18:13
【问题描述】:

我正在尝试为我的数据集构建卷积神经网络。我的训练数据集有 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),应该是别的吗?

非常感谢您阅读本文。

【问题讨论】:

  • 你的Y.shape是什么?
  • @MarcinMożejko 它是 (1209,1),因为我在数据集中有 1209 个示例,每个示例只有一个输出。我尝试用 Y = np.expand_dims(Y, axis=0) Y2 = np.expand_dims(Y2, axis=0) 改变它,但遗憾的是它没有帮助

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


【解决方案1】:

您应该在轴 2 上扩展 X 上的维度,而不是在轴 0 上扩展。因此,您需要 X = np.expand_dims(X, axis=2),而不是 X = np.expand_dims(X, axis=0)

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

【讨论】:

  • 感谢您回答@blackHoleDetector。当我指定这个 input_shape 时,我收到以下错误: ValueError: Input 0 is incompatible with layer conv1d_27: expected ndim=3, found ndim=2
  • @VincentBrisse 感谢您的更新。我刚刚更新了我的答案。试一试。我相信这会让你工作。
  • 很高兴听到@VincentBrisse!我在 YouTube 上有几个 Keras 视频,您可能会觉得有帮助(几乎每天都会添加更多视频)。卷积神经网络和微调是您感兴趣的下一个主题。 youtube.com/channel/UC4Huog4qcFfGrq_y7vKMJvg
猜你喜欢
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多