[英]Training a model using a pre-trained model
我在Keras有一個預先訓練過的模型。 我想訓練另一個模型,其中模型的輸出被輸入用於已經訓練的模型,並且已經訓練的模型的輸出被用在未訓練模型的損失函數中。 就像是
in_a + mod_b(some kind of feedback from B here) --> Model A --> out_a --> Model B --> out_b
error = (in_a - out_b)**2
然后使用此錯誤來訓練模型A. in_a
可以在此系統中視為常量,並且還有一個反饋循環
任何想法如何在keras或tensorflow中執行此操作
這是一個想法。 構建模型A直到輸出層,我們假設它與模型B的輸入層兼容。 另外,假設您使用預訓練的VGG16作為模型B.您將使用預訓練的權重加載模型:
from keras.applications.vgg16 import VGG16
# Model A is trainable
x = Input(shape=(32,))
x_d = Dense(10)(x)
model_a_out = Dense(10)(x_d)
# Model B
model_b = VGG16(weights='imagenet', include_top=True)
# Freeze Model B
for layer in model_b.layers:
layer.trainable = False
# Set input to Model B as output from A
model_b.input = model_a_out
# Train as usual
model_b.compile... and model_b.fit ...
另一種方法是首先要構建A.然后:
for layer in model_b.layers:
new_layer = layer
new_layer.trainable = False
model_a.add(new_layer)
查看Keras Applications頁面了解一些想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.