gpt4 book ai didi

python - Keras 中 Conv2D 的输入不正确

转载 作者:行者123 更新时间:2023-12-01 03:09:45 24 4
gpt4 key购买 nike

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

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

EEG analysis net from https://arxiv.org/abs/1610.01683

到目前为止,我似乎陷入了“S1”或“C2”的困境。到目前为止的想法是:

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

  • 通过 20 个一维滤波器 (1x200) 运行该结果

  • 使用池 20、步长 10 对每个过滤的输出进行最大池化(生成 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 文档并没有让我变得更明智。

我意识到上面跳过了“堆叠”过程,但我能找到的最接近的东西是连接,这只是提示我没有给它任何输入。

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

最佳答案

在从一维转变为二维之前,您需要 reshape 数据。有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 替换为默认尺寸排序。

关于python - Keras 中 Conv2D 的输入不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42978947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com