【发布时间】:2021-08-28 17:48:37
【问题描述】:
我有一个包含 100000 个形状为 (6, 4, 4) 的二进制 3D 数组的数据集,因此我输入的形状是 (10000, 6, 4, 4)。我正在尝试使用 Keras 建立一个 3D 卷积神经网络(CNN);但是,我输入的 input_shape 似乎有问题。我的第一层是:
model.add(Conv3D(20, kernel_size=(2, 2, 2), strides=(1, 1, 1), activation='relu', kernel_initializer='he_uniform', input_shape=(None, 6, 4, 4, 1)))
我收到的错误是:
ValueError:应定义
Dense输入的最后一个维度。找到None。
不过,当我用整数替换 None 并尝试将模型拟合到我的数据集时,我得到的错误是:
ValueError: 层序贯_13 的输入 0 与层不兼容: : 预期 min_ndim=5,发现 ndim=4。收到的完整形状:(10, 6, 4, 4)
这里应该修改什么?
【问题讨论】:
-
是否有特定原因要使用 3D 卷积?
(6,4,4)对二维卷积有效。 -
@Frightera 由于我的输入数据是体积数据,我认为我应该使用 3D ConvNet。不对吗?
-
那么你的通道大小是多少? 3D 图层将您的输入解释为
6 x 4 x 4 x channels。 -
@Frightera 让我看看我是否明白这一点。那么,您的意思是我应该使用 2D ConvNet 并将 6 的深度视为我的 4 x 4 二进制矩阵的通道数?而不是 3D ConvNet?
-
除非你在卷积层设置
data_format = channels_first,否则你的深度是4(对于2D conv来说OK)。或者您可以通过扩展 dims 将通道维度添加到第一个输入,然后它将具有(6,4,4,1)的形状。
标签: python machine-learning neural-network conv-neural-network