为了账号安全,请及时绑定邮箱和手机立即绑定

合并不同的 CNN 模型

合并不同的 CNN 模型

一只甜甜圈 2023-07-05 16:34:45
我们是数据科学的新手,我们正在尝试合并两种不同的 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条经验 获得超2个赞

我们将第一个模型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


查看完整回答
反对 回复 2023-07-05
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信