我试图在Keras中训练一个3D CNN模型,但我在执行单元时遇到了这个错误:
ValueError: Input 0 of layer conv3d_8 is incompatible with the layer: : expected min_ndim=5, found ndim=4. Full shape received: [None, 4, 150, 150]
我的输入数据是一个带有图像数据的numpy数组。以下是形状(我知道53太少了,但只是为了学习):
Training data shape: (53, 4, 150, 150)
Training labels shape: (53, 1)
Validation data shape: (14, 4, 150, 150)
Validation labels shape: (14, 1)
我尝试使用的模型是:
# Create the model
model = Sequential()
model.add(Conv3D(32, kernel_size=(3, 3, 3), activation='relu', kernel_initializer='he_uniform', input_shape=(4,150,150)))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(BatchNormalization(center=True, scale=True))
model.add(Dropout(0.5))
model.add(Conv3D(64, kernel_size=(3, 3, 3), activation='relu', kernel_initializer='he_uniform'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(BatchNormalization(center=True, scale=True))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(256, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(256, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(4, activation='softmax'))
# Compile the model
model.compile(loss='categorical_crossentropy',
optimizer=keras.optimizers.Adam(lr=0.001),
metrics=['accuracy'])
model.summary()
# Fit data to model
history = model.fit(treino3d, treino3d_labels,
epochs=40)
有人能帮忙吗
非常感谢
这项任务似乎不需要
Conv3D
层。改为使用Conv2D
,并且在kernel_size
和pool_size
中仅使用1或2个值你的渠道维度是第一位的,所以你需要告诉Keras。使用此行:
或者在每个
Conv2D
或MaxPooling2D
层中设置此参数:或将输入张量的维数排列为
(54, 150, 150, 4)
:完整功能,更正示例:
相关问题 更多 >
编程相关推荐