Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
张量流C++;评估性能不如Python_Python_C++_Tensorflow - Fatal编程技术网

张量流C++;评估性能不如Python

张量流C++;评估性能不如Python,python,c++,tensorflow,Python,C++,Tensorflow,我用Tensorflow(使用Python)构建了一个LSTM分类器,现在我正在做一系列基准测试来衡量执行性能。基准代码加载在训练期间保存的模型,并针对大量输入执行该模型。我既有Python基准,也有C++。p> 使用C++时,使用Python(CPU)和6MS时,每次输入时,我得到 5ms < /COD>。我期待C++版本至少有类似的性能。 是什么导致了这种差异?我不太熟悉TysFooFor的内部结构,但我的猜测之一是Python版本使用BLAS(我的NUMPI与BLAS链接)和C++不。如果

我用Tensorflow(使用Python)构建了一个LSTM分类器,现在我正在做一系列基准测试来衡量执行性能。基准代码加载在训练期间保存的模型,并针对大量输入执行该模型。我既有Python基准,也有C++。p> 使用C++时,使用Python(CPU)和6MS时,每次输入时,我得到<代码> 5ms < /COD>。我期待C++版本至少有类似的性能。


是什么导致了这种差异?我不太熟悉TysFooFor的内部结构,但我的猜测之一是Python版本使用BLAS(我的NUMPI与BLAS链接)和C++不。如果是,这是否意味着某些图形操作是在Python中执行的?

您可以尝试一个更简单的基准来缩小问题的范围。以下操作需要2-5秒的CPU时间

import tensorflow as tf
a=tf.Variable(tf.random_normal([8192, 8192], stddev=0.35))
b=tf.Variable(tf.random_normal([8192, 8192], stddev=0.35))
c=tf.matmul(a, b)

sess.run([tf.initialize_all_variables()])

import time
start_time = time.time()
sess.run(c)
print time.time()-start_time

我不确定现在发布答案是否为时已晚。我面临同样的问题,并从tensorflow github页面得到了答案:


解决方案很简单,只需使用
-c opt
标志

是用优化标志编译的C++吗?C++和Python都应该使用相同的后端(基于EGEN)来进行实际计算,所以差异是奇怪的。如果执行一个不受带宽限制的大型操作,会有什么不同吗?(即,将两个4k x 4k矩阵相乘)你找到答案了吗?构建有问题,清理和重建以某种方式解决了问题。10.4 CPU和0.58 GPU。lscpu:体系结构:x86_64 CPU操作模式:32位,64位字节顺序:小端CPU:12个在线CPU列表:0-11个线程/内核:2个内核/插槽:6个插槽:1个NUMA节点:1供应商ID:GenuineIntel CPU系列:6型号:62步进:4 CPU MHz:1200.117 BogoMIPS:4190.02虚拟化:VT-x L1d缓存:32K L1i缓存:32K二级缓存:256K三级缓存:15360Kw关于计时使用C++?您可以使用打印tf.get_default_graph().as_graph_def()获取graphdef。init op被称为
init:0
,矩阵乘法被称为
MatMul:0
需要419秒。。。我想我的盒子或代码都有问题。这是我使用的代码:嗯,可能使用不同的线程?但这并不能解释CPU时间相差20倍的原因。可能值得就此向test.cc repo提交一个问题对于以后发现此问题的任何人来说,现在的标志似乎是--config=opt()