Keras 中 Conv2D 的输入不正确

Incorrect input to Conv2D in Keras

我正在尝试学习在 python 中使用深度学习来分析 EEG 数据。不幸的是,我也是 python 的新手,所以我试图找到最简单的可用工具。这让我想到了 Keras。

更准确地说,我正在尝试实现以下管道:

到目前为止,我似乎被困在 "S1" 或 "C2" 附近。到目前为止的想法是:

但是,下面的代码给出了以下错误:

model = Sequential()
model.add(Conv1D(input_shape=(1,6000), kernel_size=200,strides=1,
                 activation='sigmoid',filters=20))
model.add(MaxPooling1D(pool_size=20, strides=10,padding='same'))
model.add(Conv2D(filters=400,kernel_size=(20,30),strides=(1,1),activation='sigmoid'))

输出:

ValueError: Input 0 is incompatible with layer conv2d_4: expected ndim=4, found ndim=3

我确信这是一个微不足道的错误,但是浏览 keras 文档并没有让我变得更聪明。

我意识到上面跳过了 "stacking" 过程,但我能找到的最接近的是连接,它只是抱怨我没有给它任何输入。

我正在使用 theano 0.9.0.dev 和 keras 2.0.2

在从 1D 到 2D 之前,您需要重塑数据。 Keras 中有 dedicated layer。我猜,你的模型可能是这样开始的:

model = Sequential()
model.add(Conv1D(input_shape=(6000,1),kernel_size=200,strides=1,
             activation='sigmoid',filters=20))
model.add(MaxPooling1D(pool_size=20, strides=10,padding='same'))
model.add(Reshape((-1, 581, 20)))
model.add(Conv2D(filters=400,kernel_size=(20,30),strides=(1,1), 
             activation='sigmoid'))

我还将 input_shape 替换为默认维度排序。