1 回答

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)
添加回答
舉報