首页 文章

创建序列到序列(seq2seq)张量流模型的集合?

提问于
浏览
0

我有一个训练有效的30个时期的张量流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?

2 回答

  • 2

    首先,一些术语:

    • ensembles (根据我的理解)你在测试时有N个模型并且你将它们组合起来(通过投票,甚至更好地组合概率分布并在自回归seq2seq解码器的情况下用作进一步解码的输入) . 您可以拥有独立的合奏(从头开始独立训练每个模型,使用不同的随机初始化)或检查点合奏(使用N个最后检查点,或者可能具有最佳验证分数的N个检查点) . 参见例如Sennrich et al., 2017用于比较这两种类型的合奏 .

    • averaging 中你平均了N型号的 weights ,所以在测试时你只有一个平均模型 . 这通常比真实的合奏更糟糕,但它更快,所以你可以承受更高的N.如果模型完全独立地训练不同的随机初始化,平均根本不起作用 . 但是,如果模型共享合理数量的初始训练步骤,则平均可能有效 . 一个特殊情况是检查点平均最后N个检查点的平均值,但您可以尝试甚至"forking"训练并使用"semi-independent"模型进行平均(除了检查点平均) . 使用恒定或周期性学习率可能非常有用,请参阅Izmailov et al., 2018 .

    至于您的问题,如何对Tensorflow检查点进行平均:请参阅avg_checkpoints.pyt2t-avg-all .

  • -1

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

    举一个简单的例子,想想像AlexNet这样的经典CNN . 它的第一层将包含一系列2d滤镜,以寻找不同的图像特征 . 对于您从头开始训练的每个模型,可能会在过滤器中显示类似的功能,但它们发生的顺序将会非常不同,因此只需平均权重就会破坏大部分信息 .

相关问题