我們是數據科學的新手,我們正在嘗試合并兩種不同的 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
提交
取消