亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用預訓練模型的第一層來提取 Keras 模型中的特征(功能 API)

如何使用預訓練模型的第一層來提取 Keras 模型中的特征(功能 API)

皈依舞 2022-06-28 16:02:53
我想使用預訓練模型的第一層——比如在 Xception 中,包括 add_5 層來從輸入中提取特征。然后將 add_5 層的輸出傳遞給可訓練的密集層。我怎樣才能實現這個想法?
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

通常,您需要重用一個模型中的層,將它們作為輸入傳遞給其余層,并創建一個模型對象,其中指定了組合模型的輸入和輸出。例如來自https://github.com/FHainzl/Visualizing_Understanding_CNN_Implementation.git的 alexnet.py 。


他們有


from keras.models import Model


from keras.layers.convolutional import Conv2D, MaxPooling2D, ZeroPadding2D


def alexnet_model():

    inputs = Input(shape=(3, 227, 227))

    conv_1 = Conv2D(96, 11, strides=4, activation='relu', name='conv_1')(inputs)

    …

    prediction = Activation("softmax", name="softmax")(dense_3)

    m = Model(input=inputs, output=prediction)

    return m

然后他們采用這個返回的模型,即所需的中間層,并制作一個返回該層輸出的模型:


def _sub_model(self):

    highest_layer_name = 'conv_{}'.format(self.highest_layer_num)

    highest_layer = self.base_model.get_layer(highest_layer_name)

    return Model(inputs=self.base_model.input,

                 outputs=highest_layer.output)

你會需要類似的東西,


highest_layer = self.base_model.get_layer('add_5')

然后繼續它


my_dense = Dense(... name=’my_dense’)(highest_layer.output)

并完成


return Model(inputs=self.base_model.input,

             outputs=my_prediction)

由于最高層是層(圖形節點),而不是連接,返回結果(圖形?。?,您需要添加.output到highest_layer.


如果上面的模型也準備好了,不知道如何準確地組合模型。也許像


model_2_lowest_layer = model_2.get_layer(lowest_layer_name)

upper_part_model = Model(inputs= model_2_lowest_layer.input,

                         outputs=model_2.output)

upper_part = upper_part_model()(highest_layer.output)

return Model(inputs=self.base_model.input,

             outputs=upper_part)


查看完整回答
反對 回復 2022-06-28
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號