我们是数据科学的新手,我们正在尝试合并两种不同的 CNN 模型(一个有 2 个类,另一个有 3 个类)。型号代码为:性别模型 #initialize the model along with the input shape model = Sequential() inputShape = (height, width, depth) chanDim = -1 if K.image_data_format() == 'channels_first': inputShape = (depth, height, width) chanDim = 1 # CONV -> RELU -> MAXPOOL model.add(Convolution2D(64, (3,3), padding='same', input_shape=inputShape)) model.add(Activation('relu')) model.add(BatchNormalization(axis=chanDim)) model.add(MaxPooling2D(pool_size=(3,3))) model.add(Dropout(0.25)) # (CONV -> RELU)*2 -> AVGPOOL model.add(Convolution2D(128, (3,3), padding='same')) model.add(Activation('relu')) model.add(BatchNormalization(axis=chanDim)) model.add(Convolution2D(128, (3,3), padding='same')) model.add(Activation('relu')) model.add(BatchNormalization(axis=chanDim)) model.add(AveragePooling2D(pool_size=(3,3) )) model.add(Dropout(0.25)) # CONV -> RELU -> MAXPOOL model.add(Convolution2D(256, (3,3), padding='same')) model.add(Activation('relu')) model.add(BatchNormalization(axis=chanDim)) model.add(MaxPooling2D(pool_size=(3,3))) model.add(Dropout(0.25)) # CONV -> RELU -> AVGPOOL model.add(Convolution2D(512, (3,3), padding='same')) model.add(Activation('relu')) model.add(BatchNormalization(axis=chanDim)) model.add(AveragePooling2D(pool_size=(3,3))) model.add(Dropout(0.25)) # DENSE -> RELU model.add(Flatten()) model.add(Dense(1024)) model.add(Activation('relu')) model.add(BatchNormalization()) model.add(Dropout(0.25)) # DENSE -> RELU model.add(Dense(512)) model.add(Activation('relu')) model.add(BatchNormalization()) model.add(Dropout(0.25)) 我们尝试使用 concatenate keras 函数合并模型,但未能理解如何合并具有不同数量类的两个模型。我们的目标是:给定一张照片,我们希望同时预测性别和种族感谢您的关注。
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
我们将第一个模型model_1和第二个模型称为model_2。您需要做的第一步是将模型的输入更改为一些常见的输入。
inputs = keras.layers.Input(shape=inputShape)
outputs_1 = model_1(inputs)
outputs_2 = model_2(inputs
接下来使用这些输入和输出创建一个模型
new_model = keras.Model(inputs=inputs, outputs=[outputs_1, outputs_2])
现在该模型有一个输入和两个输出。您可以从单个输入获得两个预测。
修复名称冲突
如果模型具有相同的名称和/或模型的图层具有相同名称的图层,请使用以下代码重命名模型和模型的图层。
model_1._name = "model_1_"+model_1.name
model_2._name = "model_2_"+model_2.name
for layer in model_1.layers:
layer._name = "model_1_layer_"+layer.name
for layer in model_2.layers:
layer._name = "model_2_layer_"+layer.name
添加回答
举报
0/150
提交
取消