繁体   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