2017-02-18 289 views
1

我正在進口keras的preggined vgg模型,從keras.applications.vgg16 import VGG16。 我注意到標準型號是keras.models.Sequential,而預訓練型號是keras.engine.training.Model型號。在standrd模型中,我可以使用add添加圖層,並使用pop刪除它們。在keras-pretrained模型中,我似乎無法使用pop。有沒有其他的選擇呢? 謝謝在keras預訓練模型中,我可以刪除圖層嗎?

+0

檢查:http://stackoverflow.com/questions/41378461/how-to-use-models-from-keras-applications-for-transfer-learnig/ 41386444#41386444 – indraforyou

回答

0

取決於你想要刪除。如果你想刪除最後SOFTMAX層和使用轉移的學習模式,你可以通過include_top=False kwarg到模型中,像這樣:

from keras.applications.vgg16 import VGG16 
IN_SHAPE = (256, 256, 3) # image dimensions and RGB channels 

pretrained_model = VGG16(
    include_top=False, 
    input_shape=IN_SHAPE, 
    weights='imagenet' 
) 

我寫了這個用例博客中最近有一些代碼示例並進行更詳細的說明:http://innolitics.com/10x/pretrained-models-with-keras/

如果您想要修改模型架構更多,可以通過pretrained_model.layers.pop()訪問pop()方法,如鏈接@indraforyou發佈中所述。

備註:當您修改預訓練模型中的圖層時,對結構和輸入/輸出形狀進行可視化會特別有幫助。 pydotgraphviz是特別有用的:

import pydot 
pydot.find_graphviz = lambda: True 
from keras.utils import plot_model 
plot_model(model, show_shapes=True, to_file='../model_pdf/{}.pdf'.format(model_name)) 
相關問題