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