簡體   English   中英

使用預先訓練的模型訓練模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM