python-3.x - 拟合 3D 卷积神经网络时出错
问题描述
我正在尝试在 google colab 上训练卷积神经网络来解决医学分类问题。数据集是 89 个 256x256x256 图像用于训练和 11 个用于测试。当我尝试制作我的模型训练时,它给了我以下错误:
import keras
from keras import optimizers
import keras.models
from keras.models import Sequential
import keras.layers
from keras.layers.convolutional import Conv3D
from keras.layers.convolutional import MaxPooling3D
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers import Dense
from keras import metrics
model = Sequential()
model.add(Conv3D(64, kernel_size=(3,3,3),
activation='relu',
input_shape=(10,1,256,256,256)))
model.add(Conv3D(64, (2,2,2), activation='relu'))
model.add(MaxPooling3D(pool_size=(2,2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))
opt=keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)
model.compile(opt, loss='categorical_crossentropy', metrics=['mae','acc'])
model.fit(x=train_data, y=train_labels,epochs=100, batch_size=10, verbose=2 ,callbacks=None, validation_split=0.0, validation_data=(validation_data,validation_labels), shuffle=True)
这是我得到的错误:
ValueError: Input 0 is in compatible with layer conv3d_56: expected ndim=5, found ndim=6
解决方案
假设您使用的是通道优先 data_format,您input_shape
对第一个 Conv3D 层的参数应该是(CHANNELS, HEIGHT, WIDTH, DEPTH)
. 但是您的输入形状元组的长度为 5,这不是 Conv3D 层所期望的。假设错误指定了 batch_size(of 10),进行以下更改应该可以解决问题
model.add(Conv3D(64, kernel_size=(3,3,3),
activation='relu',
input_shape=(1,256,256,256)))
编辑
如果您使用的是 channels_last 数据格式,您input_shape
应该是(HEIGHT, WIDTH, DEPTH, CHANNELS)
. 假设你的图像有 1 个通道,上面的行应该是,
model.add(Conv3D(64, kernel_size=(3,3,3),
activation='relu',
input_shape=(256,256,256, 1)))
推荐阅读
- sql - 如何在 6 天内检索数据
- syntax - 来自 ocaml 的嵌套 let 语法
- python - 使用 pytorch 维护数据加载器线程
- reactjs - react-redux:未处理的拒绝(TypeError):无法读取未定义的属性“数据”
- java - 如何为 Google Cloud SQL 配置 Java Hibernate?
- machine-learning - 用于检测周期性时间序列模式中的异常的随机切割森林
- python - 处理来自未预定义异常的第三方库的异常
- python - TensorBoard:将输出图像添加到回调
- rust - Rust - 内部带有所有者的 mut ref 的迭代器
- html - 响应式设计 全选