我正在尝试使用张量流训练一个集成神经网络。例如,我有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吗?如果没有,我该怎么做呢?我应该使用多会话,多进程还是多线程?