【问题标题】:Keras Nested Models save and load weights separately or view Summary of all nested modelsKeras 嵌套模型分别保存和加载权重或查看所有嵌套模型的摘要
【发布时间】:2019-09-26 10:11:25
【问题描述】:

我正在尝试训练一个包含两个嵌套模型的 Keras 模型,并且我想分别保存两个内部模型的权重。现在我可以保存整个模型的权重,但我无法在大模型中加载嵌套模型的权重。

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()callbacksmodel.fit 期间分别保存两个内部模型的权重.

我得到的是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')

【问题讨论】:

    标签: python tensorflow machine-learning keras


    【解决方案1】:

    在您发布的摘要中,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()
    

    对他们做任何你想做的事。


    如果您像以前那样创建模型,那么简单地做没有错:

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

    如果您在大模型之外加载权重,它也可以正常工作,它会看到变化。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多