如何从多个模型中获取张量并取平均?

How to get tensor from multiple models and average them?

我正在尝试对结构相同但使用不同数据集训练的两个模型的张量进行平均。该模型存储在 ckpt 文件中。

我试图从 tensor2tensor 查看 avg_checkpoints function 但不知道如何使用它。

我该如何解决这个问题?

from tensor2tensor.utils import avg_checkpoints

print(avg_checkpoints.checkpoint_exists("/"))
#I got true from console
#I have copied final ckpt from different model to the root file

avg_checkpoint.main(?)
#no idea what to replace the ? with

avg_checkpoints.py是一个可执行脚本,所以你可以从命令行使用它,例如:

python utils/avg_checkpoints.py
  --checkpoints path/to/checkpoint1,path/to/checkpoint2
  --num_last_checkpoints 2
  --output_path where/to/save/the/output

请注意,如果两个检查点是从头开始在不同的数据集上训练的,则平均将不起作用。如果你有一个预训练的模型,你只是在两个不同的数据集上微调,那么平均就可以了。

您可以对两个以上的检查点进行平均。为每个检查点添加权重的一种简单但简单的方法是将其多次包含在 --checkpoints 中(并相应地增加 num_last_checkpoints)。