Tensorflow:在这种情况下,为什么乘法比减法快20倍

时间:2017-09-30 18:38:24

标签: tensorflow

与标题一样,为什么乘法比本例中的减法要快得多?

在这个例子中,我们有M = 784个输入和N = 100个输出,因此矩阵乘法需要MxN标量乘法和(M-1)个xN加法,而减法只需要MxN标量减法。

是否因为软件和硬件在乘法和加法方面进行了大量优化?

或者是因为这里完成的所有形状brodcasting和tensorflow可能效率低下?

所有计算都是在CPU上完成的,所以这可能是另一个领导。

代码如下:

input = tf.placeholder(tf.float32, [None, 784])

W = tf.Variable(tf.truncated_normal(shape=[784, 100], mean=0., stddev=.5))

sub = tf.expand_dims(input, axis=2)-tf.expand_dims(W1, axis=0)
mul = tf.matmul(input*W)

sess = tf.InteractiveSession()
tf.global_variables_initializer().run()

start = timer()
sess.run(diff, {input: somedata}) #somedata has shape (100, 784)
timer() - start #yields around 0.15s after averaging multiple tries

start = timer()
sess.run(mul, {input: somedata})
timer() - start #yields around 0.008s after averaging

0 个答案:

没有答案