我想知道在应用过滤器后如何获取数据集的大小或len。使用tf.data.experimental.cardinality给出-2,这不是我想要的!我想知道我的数据集中有多少个经过过滤的样本,以便能够使用take()和skip()将其拆分为训练和验证数据集。
示例:
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
dataset = dataset.filter(lambda x: x < 4)
size = tf.data.experimental.cardinality(dataset).numpy()
#size here is equal to -2 but I want to get the real size which is 3
我的数据集包含图像及其标签,这只是一个说明性示例
查看文档显示基数为-2表示Tensorflow无法确定数据集的基数。您可以在here中找到它。例如,您可以执行
dataset = dataset.as_numpy_iterator()
dataset = list(dataset)
print(len(dataset))