【问题标题】:Keras Weights AveragingKeras 权重平均
【发布时间】:2018-12-24 17:23:17
【问题描述】:

我使用 Keras 使用两个不同的数据集来训练同一模型的两个实例,并将每个权重集保存为 HDF5 格式。

如何平均这两组(存储在文件中)的权重以创建一个平均权重集?

【问题讨论】:

  • 你不能平均体重,你希望这能做什么?
  • 权重平均是分布式训练中的常用技术。您可以使用不同的数据子集在许多不同的机器上训练相同的模型。但之后你必须平均所有权重才能达到最终模型。
  • 不,我认为您的意思是平均或累积梯度,您不能仅仅平均权重,因为它们是不可识别的(它们没有唯一值)。
  • 我不太确定我是否关注你,但无论哪种方式,如何合并/平均 2 个使用不同数据创建的相同模型?

标签: python model keras


【解决方案1】:

您可以这样计算平均模型:

saved_models = []
for i in range(num_models):
    model = define_model() #your model
    model.load_weights(model_name+"_"+str(i)+".hdf5") #load saved weights
    saved_models.append(model)

saved_weights = [model.get_weights() for model in saved_models]
mean_weights = list()
for weights_list_tuple in zip(*saved_weights): 
    mean_weights.append(
       np.array([np.array(w).mean(axis=0) for w in zip(*weights_list_tuple)]))
mean_model = define_model()
mean_model.set_weights(mean_weights) 

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 2020-05-24
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 2019-02-19
    • 2018-07-08
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多