首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为sequence to sequence (seq2seq) tensorflow模型创建集成?

为sequence to sequence (seq2seq) tensorflow模型创建集成?
EN

Stack Overflow用户
提问于 2017-03-16 23:06:43
回答 2查看 791关注 0票数 0

我已经训练了30个时期的tensorflow seq2seq模型,并为每个时期保存了一个检查点。我现在想要做的是组合这些检查点中最好的X个(基于开发集的结果)。具体地说,我正在寻找一种方法,让我平均不同的模型权重,并将它们合并到一个可用于解码的新模型中。然而,似乎没有一种固定的方法来实现这一点,加载不同的模型可能有点棘手。但是,即使成功了,我也找不到如何在新模型中组合权重的好答案。

任何帮助都将不胜感激。

相关问题(在我看来,这些问题没有得到充分的回答):

Building multiple models in the same graph

How to load several identical models from save files into one session in Tensorflow

How to create ensemble in tensorflow?

EN

回答 2

Stack Overflow用户

发布于 2018-05-09 23:27:59

首先,有一点术语:

  • In (据我所知)你在测试时有N个模型,你组合它们的预测(通过投票,或者更好地组合概率分布,并在自回归seq2seq解码器的情况下用作进一步解码的输入)。您可以有独立的集成(从零开始独立地训练每个模型,具有不同的随机初始化)或检查点集成(采用N个最后的检查点,或者可能是具有最佳验证分数的N个检查点)。例如,参见Sennrich et al., 2017了解这两种类型的集成的比较。
  • In averaging you average the weights of N models,因此在测试时您只有一个平均模型。这通常会给出比真实集成更差的结果,但它的速度要快得多,所以您可以负担更高的N。如果使用不同的随机初始化完全独立地训练模型,则平均根本不起作用。但是,如果模型共享合理数量的初始训练步骤,则平均可能会起作用。一种特殊情况是检查点平均,其中最后N个检查点是平均的,但您可以尝试甚至“分叉”训练并使用“半独立”模型进行平均(除了检查点平均)。使用恒定或循环学习率可能非常有用,请参阅Izmailov et al., 2018.

至于你的问题,如何计算Tensorflow检查点的平均值:请参阅avg_checkpoints.pyt2t-avg-all

票数 2
EN

Stack Overflow用户

发布于 2017-03-21 04:37:55

平均几个模型的权重来产生一个新的模型不太可能产生有用的结果。

举个简单的例子,想想像AlexNet这样的经典CNN。它的第一层将包含一系列寻找不同图像特征的2d过滤器。对于你从头开始训练的每个模型,相似的特征可能会出现在过滤器中,但它们出现的顺序将非常不同,因此仅平均权重将破坏大多数信息。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42837829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档