gpt4 book ai didi

performance - 在不同的输入参数上多次运行 Tensorflow 图 : what kind of loop is efficient?

转载 作者:行者123 更新时间:2023-12-04 21:32:20 25 4
gpt4 key购买 nike

对于我的特定问题,我需要多次重新运行曾经构建的 Tensorflow 图,每次都将变量重新初始化为新值。图的每次执行都独立于下一次。把它想象成建立一个模型,然后每次模拟随机初始化 30 次独立训练。虽然我可以通过将 Session.run() 语句放在 for 循环中来实现上述目的,但我认为这并不能保证并行性。

所以问题是:运行多个独立模拟程序的最合适的、与 Tensorflow 兼容的方式是什么?我应该在 python while 循环中执行 session.run() ,还是应该使用 Tensorflow while_loop 结构?

最佳答案

这是一个有趣的问题,我自己也在研究模型的集合。

首先,循环中的训练模型是连续进行的;既不是 Python 循环,也不是 tf.while_loop将为您提供跨实例的任何并行性。话虽如此,( tf.while_looptf.slice 相结合是处理小批量数据的一种非常有效的方式,尽管是串行的)。

一个起点是查看“分布式 TensorFlow”指南 ( https://www.tensorflow.org/deploy/distributed )。有一个关于如何生成多个并发(异步) session 的广泛讨论。您可以在同一设备上或跨网络创建 session 。我认为这能够实现您所想到的那种并行性(作者称之为“在图复制之间”与“异步训练”)。

第二个想法是通过向所有张量添加额外的“实例”维度来将您的实例堆叠在单个模型中。您还必须类似地堆叠您的训练数据输入(通过 feed-dict、队列或数据集)。您需要特别注意不要跨单个实例(即新实例维度)交叉链接节点,但您可以通过计算共享成本函数和使用标准优化器同时训练它们。优化后,实例维度中权重和值的每个组件都将代表一个简单的模型。您还可以有一个操作来计算训练时要监控的单个成本的向量。这可能不会在您的 cpu 上加快速度(它可能需要实例数 * 单个实例时间),但是如果您有一个 gpu,它可能会在相似数量的周期内为这些扩展矩阵操作提供大量额外的并行容量作为您的单一培训类(class)。

期待听到适合您的方法!

更新:

我显然对并行性不正确,在 tf_while_loop .来自 ( https://www.tensorflow.org/api_docs/python/tf/while_loop :

while_loop implements non-strict semantics, enabling multiple iterations to run in parallel. The maximum number of parallel iterations can be controlled by parallel_iterations, which gives users some control over memory consumption and execution order. For correct programs, while_loop should return the same result for any parallel_iterations > 0.

关于performance - 在不同的输入参数上多次运行 Tensorflow 图 : what kind of loop is efficient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47867359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com