合并不同的 CNN 模型

我们是数据科学的新手,我们正在尝试合并两种不同的 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 函数合并模型,但未能理解如何合并具有不同数量类的两个模型。我们的目标是:给定一张照片,我们希望同时预测性别和种族感谢您的关注。



一只甜甜圈
浏览 123回答 1
1回答

一只名叫tom的猫

我们将第一个模型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.namemodel_2._name = "model_2_"+model_2.namefor layer in model_1.layers:    layer._name = "model_1_layer_"+layer.namefor layer in model_2.layers:    layer._name = "model_2_layer_"+layer.name
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python