簡體   English   中英

Keras 嵌套模型分別保存和加載權重或查看所有嵌套模型的摘要

[英]Keras Nested Models save and load weights separately or view Summary of all nested models

我正在嘗試訓練一個包含兩個嵌套模型的 Keras Model,我想分別保存兩個內部模型的權重。 現在我可以保存整個 model 的權重,但我無法在大 model 中加載嵌套模型的權重。

Big_model.summary 的Big_model.summary看起來像這樣

Model: "model_3"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_4 (InputLayer)         [(None, 128, 128, 1)]     0         
_________________________________________________________________
model (Model)                (None, 16, 16, 512)       170369024 
_________________________________________________________________
model_1 (Model)              (None, 128, 128, 1)       15342209  
=================================================================
Total params: 185,711,233
Trainable params: 185,711,233
Non-trainable params: 0

我怎么能看到兩個內部模型的摘要,例如Big_model.inner_Model1.summary()類似的東西,或者在使用Big_model.inner_Model1.save_weights()Big_model.inner_Model2.save_weights() () 訓練后分別保存兩個內部模型的權重Big_model.inner_Model2.save_weights()model.fit期間的callbacks

我得到的是Big_model沒有作為inner_Model1的模塊,有什么幫助嗎?

PS:訓練什么的都沒有問題,我可以運行訓練,而且我使用的是Tensorflow版本tf.keras.models.Model模型。

這就是我創建模型的方式

inner_Model1 = tf.keras.models.Model()
inner_Model2 = tf.keras.models.Model()

x = tf.keras.layers.Input(shape=IMAGE_SHAPE)
Big_model = tf.keras.models.Model(x, inner_model2(inner_model1(x)))
Big_model.compile(optimizer=optimizer, loss='mean_absolute_error')

在您發布的摘要中, model是第 1 層, model_1是第 2 層:

Big_model.layers[1].summary()   #this is inner_Model1.summary()
Big_model.layers[2].summary()   #this is inner_Model2.summary()

對他們做任何你想做的事。


如果您像以前一樣創建了 model,那么簡單地執行以下操作沒有任何問題:

inner_Model1.save_weights(...)
inner_Model2.save_weights(...)

如果您在大 model 之外加載重量,它也可以正常工作,它會看到變化。

inner_Model1.load_weights(...)
inner_Model2.load_weights(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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