import tensorflow as tf
import time
x = tf.random_uniform([500, 10])
z = tf.zeros([10])
for i in range(500):
z += x[i]
sess = tf.Session()
start = time.time()
sess.run(z)
print("First: Took %f seconds." % (time.time() - start))
z = tf.zeros([10])
for x_i in tf.unstack(x):
z += x_i
start = time.time()
sess.run(z)
print("Second: Took %f seconds." % (time.time() - start))
z = tf.zeros([10])
z = tf.reduce_sum(x, axis=0)
start = time.time()
sess.run(z)
print("Third: Took %f seconds." % (time.time() - start))
输出:
First: Took 0.833169 seconds.
Second: Took 0.203076 seconds.
Third: Took 0.062491 seconds.
可以看到,实现同样的功能不同的实现方式耗时差距达十几倍。