Well, referring to the documentation:
numpy.multiply (x1, x2 [, out]) = Multiple arguments elementwise.
and
tf.matmul (a, b, transpose_a = False, transpose_b = False, a_is_sparse = False, b_is_sparse = False, name = None)
Multiplies matrix a by matrix b, creating a * b.
The inputs should be two-dimensional matrices, with corresponding internal dimensions, possibly after transposition.
, : O (n ^ 2) O (n ^ 3). , 2 :
import tensorflow as tf
import numpy as np
import time
size=2000
x = tf.placeholder(tf.float32, shape=(size, size))
y = tf.matmul(x, x)
z = tf.matmul(y, x)
with tf.Session() as sess:
rand_array = np.random.rand(size, size)
start_time = time.time()
for _ in xrange(10):
np.dot(np.dot(rand_array,rand_array), rand_array)
print("--- %s seconds numpy multiply ---" % (time.time() - start_time))
start_time = time.time()
for _ in xrange(10):
sess.run(z, feed_dict={x: rand_array})
print("--- %s seconds tensorflow---" % (time.time() - start_time))
:
--- 2.92911195755 seconds numpy multiply ---
--- 0.32932305336 seconds tensorflow---
GPU (gtx 1070).