我需要使用Tensorflow和Python来训练大量的神经网络。我的神经网络(MLP)从非常小的(~ 2个隐藏层,每个~30个神经元)到大的(3-4个层,每个>500个神经元)。
我能够在我的GPU上按顺序运行它们,这是很好的。但是我的CPU几乎是空闲的。此外,我发现,对于非常小的网络,我的CPU比GPU更快(我假设是因为GPU开销等原因)。这就是为什么我想同时使用CPU和GPU来训练我的网络。CPU应该处理较小的网络到较大的网络,而我的GPU应该处理从较大的网络到较小的网络,直到它们在中间的某个地方相遇……我想,这是个好主意:-)
所以我只是简单地在不同的进程中启动我的消费者两次。一个是device = CPU,另一个是device = GPU。两者都像预期的那样启动并使用了前两个网络。但是,GPU消费者抛出了一个异常,他的张量被CPU(!)上的另一个进程访问/违反,我觉得这很奇怪,因为它应该在GPU上运行……
有没有人可以帮助我,完全隔离我的to进程?
发布于 2018-01-29 21:11:14
您的网络中有共享运营商的吗?例如,它们在设置为variable_scope(reuse=True)的相同variable_scope中使用具有相同名称的变量
然后,多个网络将尝试重用相同的底层张量结构。
还要检查tf.Session中的tf.ConfigProto.allow_soft_placement是否设置为True或False。
https://stackoverflow.com/questions/46929145
复制相似问题