我正在做一些关于使用张量流训练深度神经网络的研究。我知道如何训练模型。我的问题是我必须在两台不同的计算机上使用不同的数据集训练相同的模型。然后保存模型权重。后来我必须以某种方式合并两个模型权重文件。我不知道如何合并它们。是否有一个函数可以做到这一点或者应该对权重进行平均?
对这个问题的任何帮助都会很有用
提前致谢
实际上没有办法合并权重,你不能以任何方式平均或组合它们,因为结果没有任何意义。您可以做的是结合预测,但为此训练课程必须相同。
这不是编程限制,而是理论上的限制。
最好在训练期间合并权重更新(梯度)并保留一组通用的权重,而不是在单独的训练完成后尝试合并权重。两个单独训练的网络可能会找到不同的最佳值,例如对权重进行平均可能会导致网络在两个数据集上表现更差。
您可以做两件事:
在这种情况下通常:
(上述方法有多种变体,以避免计算节点空闲太长时间等待其他节点的结果)。以上假设计算节点上运行的 Tensorflow 进程在训练期间可以相互通信。
请参阅 https://www.tensorflow.org/deploy/distributed)了解更多详细信息以及如何在多个节点上训练网络的示例。
这里的所有答案都已经过时了。
对不同模型的权重进行平均现在是 NLP 和 LLM 研究中相当常见的技术。
成功取决于“彩票网络假设”,在许多情况下,只有小型子网络包含模型的大部分知识,因此在多次训练中对它们进行平均,可以产生一个新模型,其行为有点像其他模型的集合.