對於大型陣列,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? 在此先感謝。