【发布时间】:2021-06-02 02:15:37
【问题描述】:
我有一个灰度 3d 图像(32、32、32)(是从磁共振图像中拍摄的图像),我正在尝试用它构建一个简单的自动编码器。我遇到的问题是当我尝试将模型拟合到图像 (model.fit()) 时,因为我收到了这个错误:
ValueError:层顺序的输入 0 与层不兼容::预期 min_ndim=5,发现 ndim=4。收到的完整形状:(32, 32, 32, 1)
这是一个 .nii 图像。取自对 conv2d 提出相同问题的其他帖子,我尝试调整一些答案并且我确实重塑了但我不知道为什么它仍然期待 ndim=5,不应该是 ndim 5 keras 在内部添加的批处理维度? ?
这就是我所做的:
cube = np.array(cube.get_fdata())
cube = cube.reshape(32, 32, 32, 1)
这是我构建的自动编码器(这是我第一次构建它并用于 3D 图像,所以如果有什么问题请告诉我):
sample_shape = (32, 32, 32, 1)
model = Sequential()
model.add(Conv3D(64, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform', input_shape=sample_shape))
model.add(MaxPooling3D(pool_size=(2, 2, 2), padding='same'))
model.add(Conv3D(32, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.add(MaxPooling3D(pool_size=(2, 2, 2), padding='same'))
model.add(Conv3D(16, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.add(MaxPooling3D(pool_size=(2, 2, 2), padding='same'))
model.add(Conv3D(8, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.add(MaxPooling3D(pool_size=(2, 2, 2), padding='same'))
model.add(Conv3D(8, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.add(UpSampling3D(size=(2, 2, 2)))
model.add(Conv3D(16, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.add(UpSampling3D(size=(2, 2, 2)))
model.add(Conv3D(32, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.add(UpSampling3D(size=(2, 2, 2)))
model.add(Conv3D(64, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.add(UpSampling3D(size=(2, 2, 2)))
model.add(Conv3D(3, kernel_size=(3, 3, 3), activation='relu', padding='same', kernel_initializer='he_uniform'))
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
model.summary()
谢谢!
【问题讨论】:
标签: python autoencoder