我有一个受过训练的张量流图。训练之后,我想为多个中间值采样一个变量。简化为:
a = tf.placeholder(tf.float32, [1])
b = a + 10
c = b * 10
现在,我想查询c
的{{1}}值。目前,我正在使用外循环
b
这个循环需要相当多的时间,我认为这是因为b_values = [0, 1, 2, 3, 4, 5]
samples = []
for b_value in b_values:
samples += [sess.run(c,
feed_dict={b: [b_value]})]
在我的情况下包含5000个值。有没有办法只运行b_values
一次,并立即传递所有sess.run
?我无法真正修改图b_values
,但如果有帮助,我可以添加一些内容。
答案 0 :(得分:1)
你可以这样做:
import tensorflow as tf
import numpy as np
import time
a = tf.placeholder(tf.float32, [None,1])
b = a + 10
c = b * 10
sess = tf.Session()
b_values = np.random.randint(500,size=(5000,1))
samples = []
t = time.time()
for b_value in b_values:
samples += [sess.run(c,feed_dict={b: [b_value]})]
print time.time()-t
#print samples
t=time.time()
samples = sess.run(c,feed_dict={b:b_values})
print time.time()-t
#print samples
输出:(以秒为单位的时间)
0.874449968338
0.000532150268555
希望这有帮助!