【发布时间】:2018-05-27 16:33:48
【问题描述】:
我正在尝试实现一个具有医学成像功能的 3D 卷积神经网络,该网络由 10 个 64x64 形状的连续图像切片组成。它们是灰度图像。因此我的输入尺寸是 64 x 64 x 10 我的第一层是
model = Sequential()
model.add(Conv3D(32, kernel_size=(3,3,3), strides=(1, 1, 1), input_shape=(64, 64, 10)))
model.add(Activation('relu'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
使用此代码我得到错误
Input 0 is incompatible with layer conv3d_1: expected ndim=5, found ndim=4
因此我将输入重新调整为
model = Sequential()
model.add(Conv3D(32, kernel_size=(3,3,3), strides=(1, 1, 1), input_shape=(64, 64, 10, 1)))
model.add(Activation('relu'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
现在我得到了错误
ValueError: ('Input data in `NumpyArrayIterator` should have rank 4. You passed an array with shape', (128, 64, 64, 10, 1))
我试图在 Keras 代码中覆盖它,但这会导致更多错误,我很确定可以输入大量切片 - 我只是看不出问题出在哪里。
【问题讨论】:
-
您能否编辑您的问题,显示您如何初始化 numpy 数组,以及您传递给模型编译和拟合函数的内容。
-
您在哪里收到此错误?
-
在我看来,您在某处以 128 的批大小对数据进行了批处理,我会说您的输入形状应该看起来像 (1, 64,64,10) 而不是 (64,64,10, 1),而不是一个,尝试批处理它,因为它看起来像是在你的代码中的某个地方,你批处理了一些数组。需要看更多才能弄清楚。
标签: image keras convolution