繁体   English   中英

Keras中Conv2D输入错误

[英]Incorrect input to Conv2D in Keras

我正在尝试学习在Python中使用深度学习来分析EEG数据。 不幸的是,我也是python的新手,因此尝试寻找可用的最简单的工具。 这把我引向了Keras。

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

来自https://arxiv.org/abs/1610.01683的EEG分析网

到目前为止,我似乎仍然停留在“ S1”或“ C2”周围。 到目前为止的想法是:

  • 脑电数据的输入部分(我现在将使用1 x 6000)

  • 通过20个1D滤镜(1x200)运行

  • 在步长为10的池20上对每个过滤的输出进行最大池化(产生20个1x578数据点)
  • 将其“堆叠”为20 x 578矩阵
  • 通过内核大小为20 x 30的2D卷积运行

但是,以下代码给了我以下错误:

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文档并没有使我更明智。

我意识到上面的代码跳过了“堆叠”过程,但是我能找到的最接近的东西是Concatenate,只是抱怨我没有给它任何输入。

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

从1D到2D之前,您需要重塑数据。 Keras中有专用层 我想,您的模型可能会像这样开始:

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替换为默认的尺寸顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM