Как в TensorFlow 2.0 увидеть количество элементов в наборе данных?

Когда я загружаю набор данных, мне интересно, есть ли какой-нибудь быстрый способ найти количество выборок или пакетов в этом наборе данных. Я знаю, что если я загружаю набор данных с помощью with_info=True, я могу видеть, например, total_num_examples=6000,, но эта информация недоступна, если я разделяю набор данных.

В настоящее время я подсчитываю количество образцов следующим образом, но мне интересно, есть ли лучшее решение:

train_subsplit_1, train_subsplit_2, train_subsplit_3 = tfds.Split.TRAIN.subsplit(3)

cifar10_trainsub3 = tfds.load("cifar10", split=train_subsplit_3)

cifar10_trainsub3 = cifar10_trainsub3.batch(1000)

n = 0
for i, batch in enumerate(cifar10_trainsub3.take(-1)):
    print(i, n, batch['image'].shape)
    n += len(batch['image'])

print(i, n)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
0
2 899
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если возможно узнать длину, вы можете использовать:

tf.data.experimental.cardinality(dataset)

но проблема в том, что набор данных TF изначально загружается лениво. Таким образом, мы можем не знать размер набора данных заранее. Действительно, вполне возможно иметь набор данных, представляющий бесконечный набор данных!

Если это достаточно маленький набор данных, вы также можете просто перебрать его, чтобы получить длину. Я использовал следующую уродливую маленькую конструкцию раньше, но это зависит от того, достаточно ли мал набор данных, чтобы мы могли загрузить его в память, и это действительно не улучшение по сравнению с вашим циклом for выше!

dataset_length = [i for i,_ in enumerate(dataset)][-1] + 1

Другие вопросы по теме

Похожие вопросы

Как ограничить доступ к неопределенной переменной класса/экземпляра?
Перечислите все возможные комбинации значений фрейма данных pandas для достижения определенной суммы
Как создать новый столбец, который возвращает значение из другой таблицы по определенным критериям в Python
Как предоставить python argparse.parser с аргументами внутри кода без аргументов командной строки?
Большой (6 миллионов строк) pandas df вызывает ошибку памяти с `to_sql`, когда размер фрагмента = 100, но может легко сохранить файл размером 100 000 без размера фрагмента
Как выйти из скрипта Python, вызванного в приложении Flask?
Использовать ключ для хранения переменных из dict1 в качестве нового ключа для dict2
Не удалось разделить строку
Прогноз Knn выполняется на 100% на y_test
Возвращение местоположения первого значения в местоположении фрейма данных, которое соответствует условию в фрейме данных pandas