我在使用tensorflow(两台不同的机器上的0.12.1和0.11.0rc1)时遇到了一个问题,即手动执行前向传播和梯度计算非常慢(另一方面,训练工作正常)。
特别是,对于1张图片,调用sess.run(predictions, feed_dict={...}
需要1到1.2秒。作为参考,在caffe'中实现的相同架构大约需要100-150毫秒,这与我重新实现的论文中报告的时间一致。通过tf.gradients
通过网络进行反向传播需要相似的时间(~1.5s)。同样,caffe中的相同架构大约需要1/10的时间。
我检查了前向道具中的GPU使用情况,以确保它实际上正在使用GPU并且它在sess.run
期间正确尖峰(使用带有cuda 8的GTX TITAN Z和带有cuda 7.5的TITAN X)两台机器分别)
事实上,caffe中的相同架构(一个相当简单的转换,https://arxiv.org/abs/1603.06041)工作得很好,这让我觉得我的张量流代码或配置都有问题,但我不清楚哪里开始。有什么建议?
谢谢!
编辑:添加代码的链接。
Tensorflow网络和转发功能:http://pastebin.com/y9jKBdsV(忽略转发功能看起来像dcgan的事实,问题仍然存在)
Caffe原型和前向功能:http://pastebin.com/DqWdbHU8