我正在尝试使用python中的深度学习来分析EEG数据。不幸的是,我也是python的新手,所以试图找到最简单的工具。这导致我去了Keras。
更确切地说,我正在尝试实现以下管道:
到目前为止,我似乎被困在“S1”或“C2”附近。到目前为止的想法是:
输入EEG数据部分(我现在将使用1 x 6000)
通过20个1D过滤器(1x200)
但是,下面的代码给出了以下错误:
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
答案 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
替换为默认维度排序。