仅保存可训练的权重 - Tensorflow 模型

时间:2021-02-22 10:28:23

标签: tensorflow keras tensorflow2.0 keras-layer

我想保存自定义 VGG16 模型的可训练权重。 我知道: custom_vgg_model.save_weights(fname) => 保存所有权重,甚至是 VGG16 无法训练的权重。 我怎样才能只保存可训练的权重?

1 个答案:

答案 0 :(得分:0)

通常,您只需保存整个模型,然后使用 model.load_weights(by_name=True) 仅加载您要传输的权重。但是,如果出于传输以外的其他原因(减少磁盘空间),您想保存权重的子集,您可以这样做:

  1. 在要从训练好的模型 layer.get_weights 中保存的层上调用 model1

  2. 构建一个新的更小的 VGG 模型 model2,其中只有您想要保存的层(只需从 vgg 实现中复制模型声明)。

  3. 使用您在步骤 1 中提取的来自 layer.set_weights 的权重在这个新的 model2 的所有层上调用 model1

  4. 保存model2