tensorflow中的tf.函数是否优化运行时间?
我是用tensorflow中的tf.函数是否优化运行时间?,tensorflow,keras,deep-learning,neural-network,tensorflow2.0,Tensorflow,Keras,Deep Learning,Neural Network,Tensorflow2.0,我是用tf读的。函数可以通过创建一个图和惰性评估来优化运行时间。以下是执行矩阵乘法的示例代码: import tensorflow as tf def random_sample(x1,x2): return tf.matmul(x1,x2) @tf.function def random_sample_optimized(x1,x2): return tf.matmul(x1,x2) x1 = tf.constant(tf.random.normal(shape=(399
tf读的。函数
可以通过创建一个图和惰性评估
来优化运行时间。以下是执行矩阵乘法的示例代码:
import tensorflow as tf
def random_sample(x1,x2):
return tf.matmul(x1,x2)
@tf.function
def random_sample_optimized(x1,x2):
return tf.matmul(x1,x2)
x1 = tf.constant(tf.random.normal(shape=(3999,29999)))
x2 = tf.constant(tf.random.normal(shape=(29999,3999)))
计算运行时间:
import time
start = time.time()
op1 = random_sample(x1,x2)
end = time.time()
print (end-start) ## op ~avg = 7 secs
start = time.time()
op2 = random_sample_optimized(x1,x2)
end = time.time()
print (end-start) ##op ~avg = 9.5 secs
使用tf.function
时,不仅平均值较高,而且使用tf.function
时,每次运行的个人运行时间也较高
关于我是否正确使用了tf.function
或者它仅在构建复杂神经网络时提供优化,有什么建议吗?对于复杂的计算,tf.function
通常运行得更快。引用本书中的以下几行——“使用Scikit Learn、Keras和TensorFlow进行机器学习”以及示例:
TF函数的运行速度通常比原始Python函数快得多,特别是当它执行复杂计算时。然而,在这个简单的例子中,计算图太小了,根本没有什么需要优化的,所以tf_cube()实际上运行得很多
比多维数据集()慢
对于复杂的计算,tf.function
通常运行得更快。引用本书中的以下几行——“使用Scikit Learn、Keras和TensorFlow进行机器学习”以及示例:
TF函数的运行速度通常比原始Python函数快得多,特别是当它执行复杂计算时。然而,在这个简单的例子中,计算图太小了,根本没有什么需要优化的,所以tf_cube()实际上运行得很多
比多维数据集()慢
tf.function
修饰函数在第一次调用时编译静态图。后续调用应该要快得多。一个tf.function
修饰函数在第一次调用时编译一个静态图。随后的通话应该会快得多。
def cube(x):
return x ** 3
>>> cube(2)
8
>>> cube(tf.constant(2.0))
<tf.Tensor: id=18634148, shape=(), dtype=float32, numpy=8.0>
>>> tf_cube = tf.function(cube)
>>> tf_cube
<tensorflow.python.eager.def_function.Function at 0x1546fc080>
>>> tf_cube(2)
<tf.Tensor: id=18634201, shape=(), dtype=int32, numpy=8>
>>> tf_cube(tf.constant(2.0))
<tf.Tensor: id=18634211, shape=(), dtype=float32, numpy=8.0>