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