我想保存自定义 VGG16 模型的可训练权重。 我知道: custom_vgg_model.save_weights(fname) => 保存所有权重,甚至是 VGG16 无法训练的权重。 我怎样才能只保存可训练的权重?
答案 0 :(得分:0)
通常,您只需保存整个模型,然后使用 model.load_weights(by_name=True)
仅加载您要传输的权重。但是,如果出于传输以外的其他原因(减少磁盘空间),您想保存权重的子集,您可以这样做:
在要从训练好的模型 layer.get_weights
中保存的层上调用 model1
。
构建一个新的更小的 VGG 模型 model2
,其中只有您想要保存的层(只需从 vgg 实现中复制模型声明)。
使用您在步骤 1 中提取的来自 layer.set_weights
的权重在这个新的 model2
的所有层上调用 model1
。
保存model2
。