如何同时运行多重优化器?

时间:2018-08-13 22:52:07

标签: python tensorflow distributed-computing distributed supervised-learning

我正在尝试使用张量流训练一个集成神经网络。例如,我有5个分类器,每个分类器都是一个神经网络。我得到了不同的样本来分别训练它们。因此,我可以同时使用分布式方法来训练它们,而不是一个一个地训练它们。

问题是:我将这5个网络部署在5个不同的设备(例如5个GPU)上。对于每个网络,我创建一个Adamoptimizer(这意味着我总共有5个Adamoptimizer)。

我在训练此网络时,首先获取所有网络的样本(如果一个网络需要64个样本,那么我将获取320个样本)。

方法1 接下来,我运行: sess.run(tf.group(opt1, opt2, opt3, opt4, opt5)) 为了同时运行这5个优化器。

方法2 另一种方法是在for循环中运行opts:

opt=[opt1, opt2, opt3, opt4, opt5]

for i in range(5):

sess.run(opt[i])

但是,我尝试用两种方式记录时间成本,发现它们几乎相同。

所以我的问题是,如果我只使用一个会话并运行

sess.run(tf.group(opt1, opt2, opt3, opt4, opt5))

这5个选项是否会真正地一个接一个地执行?

如果我想同时运行它们,该怎么办?

顺便说一句,如果我只使用一个会话,我能得到多快?方法1中的时间成本可以等于方法2的1/5吗?如果没有,我该怎么做呢?我应该使用多会话,多进程还是多线程?

0 个答案:

没有答案