當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.keras.models.clone_model用法及代碼示例


克隆函數或順序Model 實例。

用法

tf.keras.models.clone_model(
    model, input_tensors=None, clone_function=None
)

參數

  • model Model 的實例(可以是函數模型或順序模型)。
  • input_tensors 用於構建模型的輸入張量或 InputLayer 對象的可選列表。如果未提供,將創建新的 Input 對象。
  • clone_function 可調用以用於克隆目標模型中的每一層(InputLayer 實例除外)。它將要克隆的層實例作為參數,並返回要在模型副本中使用的相應層實例。如果未指定,則此可調用默認為以下序列化/反序列化函數:lambda layer:layer.__class__.from_config(layer.get_config())。通過傳遞自定義可調用對象,您可以自定義模型副本,例如通過包裝某些感興趣的層(例如,您可能希望將所有 LSTM 實例替換為等效的 Bidirectional(LSTM(...)) 實例)。

返回

  • Model 的一個實例,使用新實例化的權重在新輸入張量之上再現原始模型的行為。如果自定義 clone_function 修改圖層,則克隆模型的行為可能與原始模型不同。

模型克隆類似於在新輸入上調用模型,不同之處在於它創建新層(並因此產生新權重)而不是共享現有層的權重。

請注意,clone_model 不會保留模型內共享對象的唯一性(例如,附加到兩個不同層的單個變量將恢複為兩個單獨的變量)。

例子:

# Create a test Sequential model.
model = keras.Sequential([
    keras.Input(shape=(728,)),
    keras.layers.Dense(32, activation='relu'),
    keras.layers.Dense(1, activation='sigmoid'),
])
# Create a copy of the test model (with freshly initialized weights).
new_model = clone_model(model)

請注意,不能克隆子類模型,因為它們的內部層結構是未知的。要在子類模型的情況下實現與 clone_model 等效的函數,隻需確保模型類實現 get_config() (以及可選的 from_config() ),然後調用:

new_model = model.__class__.from_config(model.get_config())

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.models.clone_model。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。