Где известна длина, вы можете позвонить:
tf.data.experimental.cardinality(dataset)
, но если это не удается, важно знать, что TensorFlow Dataset
(в общем) лениво оценивается, так что это означает, что в общем случае нам может понадобиться перебирать каждую запись, прежде чем мы сможем найти длину набор данных.
Например, предполагая, что у вас включено активное выполнение, и его небольшой «игрушечный» набор данных удобно помещается в памяти, вы можете просто enumerate
добавить его в новый список и получить последний индекс (затем добавить 1, потому что списки равны нулю). индексированный):
dataset_length = [i for i,_ in enumerate(dataset)][-1] + 1
Конечно, это в лучшем случае неэффективно, и для больших наборов данных произойдет полный сбой, потому что все должно помещаться в память для списка. в таких обстоятельствах я не вижу другой альтернативы, кроме как перебирать записи, ведя счет вручную.