是否有比
更快的方法来计算
tensorflow.data.Dataset
的所有元素
def count_elements(dataset: tf.data.Dataset):
return dataset.reduce(0, lambda x, _ : x + 1).numpy()
“更快”意味着还要考虑内存使用情况,但执行时间至关重要。据我所知,没有内置方法可以实现此目的。
简短回答“否”。
对于内存数据集,有:
tf.data.experimental.cardinality(dataset)
,但是tf.data.Dataset
本质上是延迟加载的,并且可以是无限的,因此不迭代它就无法知道tf.data.Dataset
中有多少个元素。
tfds.benchmark(dataset) 对我来说比上述任何方法都快