Tensorflow 2.0的official documentation建议与tf.data.Dataset
一起使用tf.function
。
有两个这样的用法示例:
Dataset
作为tf.function
的自变量,如here所述:@tf.function
def train(model, dataset, optimizer):
for x, y in dataset:
....
Dataset
主体中创建本地tf.function
:@tf.function
def train(model, optimizer):
train_ds = mnist_dataset()
...
最后,autograph doc指出Dataset
对tf.function
的迭代进行了优化。
This SO answer确实表明,使用Dataset
作为tf.function
的参数可以提高性能。
因此,tf.data.Dataset
如何从tf.function
中受益,又如何解释this SO answer的提速:
Dataset
跟踪器如何处理tf.function
对象。像在参数中或作为局部变量示例一样,即使tf.function
documentation建议原始函数只接受Dataset
,我们如何在tf.function
中使用Tensor
? Dataset
子图之间(然后可以在tf.function
子图中使用)之间是否存在某种通信/共享,或者两者是完全分开的(意味着Dataset
只是用作tf.function
的黑盒迭代器)?