对于大型阵列,Tensorflow tf.subtract花费的时间太长。tf.subtract花费的时间太长,对于大型阵列
我的工作站配置:
CPU:至强E5 2699 V3
纪念品:384 GB
GPU:NVIDIA K80
CUDA 8.5
CUDNN:5.1
Tensorflow:1.1.0,GPU版本
以下是测试代码和结果。
import tensorflow as tf
import numpy as np
import time
W=3000
H=4000
in_a = tf.placeholder(tf.float32,(W,H))
in_b = tf.placeholder(tf.float32,(W,H))
def test_sub(number):
sess=tf.Session()
out = tf.subtract(in_a,in_b)
for i in range(number):
a=np.random.rand(W,H)
b=np.random.rand(W,H)
feed_dict = {in_a:a,
in_b:b}
t0=time.time()
out_ = sess.run(out,feed_dict=feed_dict)
t_=(time.time()-t0) * 1000
print "index:",str(i), " total time:",str(t_)," ms"
test_sub(20)
结果:
指数:0总时间:338.145017624毫秒
索引:1周总时间:137.024879456毫秒
指数:2总时间:132.538080215毫秒
指数:3的总时间:133.152961731毫秒
指数:4的总时间:132.885932922毫秒
指数:5总时间:135.06102562毫秒
指数:6总时间:136.723041534毫秒
指数:7总时间:1 37.926101685毫秒
指数:8总时间:133.605003357毫秒
指数:9总时间:133.143901825毫秒
指数:10总时间:136.317968369毫秒
指数:11总时间:137.830018997毫秒
指数:12总时间: 135.458946228毫秒
指数:13总时间:132.793903351毫秒
指数:14总时间:144.603967667毫秒
指数:15总时间:134.593963623毫秒
指数:16总时间:135.535001755毫秒
指数:17总时间: 133 0.697032928毫秒
指数:18总时间:136.134147644毫秒
指数:19总时间:133.810043335毫秒
测试结果表明它(即,tf.subtract)花费超过130毫秒处置一个3000x4000减法,这显然太长了,特别是在NVIDIA的k80 GPU平台上。
任何人都可以提供一些方法来优化tf.subtract? 在此先感谢。