我在Ubuntu 14.04(VM,Droplet)上遇到TensorFlow(CPU)问题,第一次运行脚本很快,但在完成后直接运行相同(或另一个)脚本第一次运行,事情变得非常缓慢。 我说的是分钟而不是秒。即使是简单的测试脚本(如本教程中提供的那些)也会永远占用,没有可见的CPU负载。
为了比较:从教程中首次运行测试脚本给出:
{real:0m0.790s, user:0m0.688s, sys:0m0.111s}
第二次运行同一个脚本,在第一次运行完成后直接给出:
{real: 2m46.628s, user: 0m0.783s, sys: 0m0.104s}
最终,事情似乎已经清理,性能又恢复了(尽管只有一次运行)。
我把问题缩小到这个:
sess=tf.Session()
需要很长时间。显然,前一个Session使用的资源没有正确发布[?]。我的脚本使用Context管理器,比如
with tf.Session() as sess:
sess.run(...)
我最新的假设是,这与系统属性(虚拟机设置,与TF的上下文管理器交互的管理程序问题)有关。使用TF的docker容器没有任何区别。重新启动也没有帮助。相同的脚本在OS X上运行正常。
答案 0 :(得分:2)
要确保发生的事情很明显并且回答了这个问题:这是因为tensorflow是从/ dev / random而不是/ dev / urandom读取的。在某些系统上,/ dev / random可以耗尽其随机性供应并阻塞,直到可用更多,导致速度减慢。这已经是fixed in github了。修复程序包含在release 0.6.0及更高版本中。