【问题标题】:Keras saving weights of individual layers instead of a modelKeras 保存单个层的权重而不是模型
【发布时间】:2018-09-04 06:12:18
【问题描述】:

我目前正在尝试创建多个模型,这些模型将重用某些层,包括它们的权重。 我通过创建一个初始化这些层的列表来实现这一点,然后在创建每个单独的模型时调用它们。

column = []
column.append(Conv2D(self.out_filters, (3, 3), padding='same', kernel_initializer='he_normal', activation='relu'))
column.append(Conv2D(self.out_filters, (5, 5), padding='same', kernel_initializer='he_normal', activation='relu'))

然后在创建模型时

layer = column[0](input)

现在我的问题是,如何保存列表中所有层的权重?据我所知,keras 的保存功能只保存已正确构建的整个模型。

编辑:为了澄清,我想保存“列”列表,而不是最终模型。我在使用存储在“列”内的层时随机生成模型结构。因此,两个模型可能具有不同的架构,但它们共享权重(对一个模型的训练也会影响另一个模型的权重)。

【问题讨论】:

    标签: python keras deep-learning conv-neural-network


    【解决方案1】:

    像这样。

    model.save_weights('my_model_weights.h5')
    

    model.get_weights() 也可以用来获取模型的权重,然后手动保存以备后用

    model.get_weights()
    

    Link

    【讨论】:

    • 那是为了保存一个模型,不是吗?如果我有 2 个具有不同结构的模型,那么会发生什么?这就是为什么我想保存“列”列表而不是生成的模型。
    • 那是为了保存一个模型,是的。您可以使用 model.get_weights() 来检索特定模型的权重,提取所需层的权重,然后以某种自定义格式保存它们。然后你需要解析这些信息。至少我无法为您的具体问题找到更简单的解决方案。
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多