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>