【发布时间】:2020-04-01 03:00:46
【问题描述】:
我设计了一个 CNN 网络,以便在 keras 中使用“cifar10”数据集。 这是我的代码:
input_layer = Input(shape=(32,32,3))
x = Conv3D(32,(5,5,3),activation='relu',padding='same')(input_layer)
x = Conv3D(32,(5,5,3),activation='relu',padding='same')(x)
x = MaxPool3D(pool_size=2, padding='same')(x)
x = Conv3D(32,(5,5,3),activation='relu',padding='same')(x)
x = Conv3D(32,(5,5,3),activation='relu',padding='same')(x)
x = MaxPool3D(pool_size=2, padding='same')(x)
x = Flatten()(x)
x = Dense(128,kernel_initializer='random_normal', bias_initializer='zeros')(x)
x = Dense(128,kernel_initializer='random_normal', bias_initializer='zeros')(x)
output_layer = Dense(10,activation='softmax',kernel_initializer='random_normal', bias_initializer='zeros')(x)
Cifar10_CNN = Model(input_layer, output_layer)
当我构建模型时出现此错误:
Input 0 is incompatible with layer conv3d_5: expected ndim=5, found ndim=4
我该如何解决这个问题?
【问题讨论】:
-
将 ndim=5 的正确输入提供给函数 conv3d_5,而不是 ndim=4 的输入。问题:函数 conv_3d_5 在哪里?哪个函数调用最后一个?你调查了吗?
-
另一种解决方案可能是使用函数 conv3d_4。它存在吗?好吧,你有很多不同的方法可以解决这个问题:) 深入了解其余代码
-
@Leos313 是的,下划线后面的数字不能确定是哪一层导致错误。我第一次运行代码时它是“1”,我认为它指的是第一个 Conv3D 层。我更改了参数,但仍然得到相同的错误。在多次运行代码而不更改代码后,数字只是增加了。在“11”运行后它得到“11”。所以它不涉及任何层。我想知道它是什么。
标签: python-3.x keras conv-neural-network