#python #tensorflow #tensorflow-datasets
#python #tensorflow #tensorflow-datasets
Вопрос:
У меня есть записная книжка в Google Colab со следующим кодом:
batch_size = 64
dataset_name = 'coco/2017_panoptic'
tfds_dataset, tfds_info = tfds.load(
dataset_name,
split='train',
with_info=True)
Я хотел бы знать, возможно ли загружать только часть набора данных (скажем: 5% или X количество изображений) с tfds_load
помощью функции. Насколько я вижу в документации, для этого нет аргументов. Конечно, можно было бы нарезать набор данных после загрузки, но этот конкретный dataset ( coco/2017_panoptic
) составляет 19,57 гигабайт, что, очевидно, занимает довольно много времени для загрузки.
Ответ №1:
Первоначальный вопрос был о том, как загрузить подмножество набора данных.
И поэтому ответ, рекомендующий использовать аргумент like split='train[:5%]'
как способ загрузки только 5% обучающих данных, ошибочен. Кажется, что это все еще загружает весь набор данных, но затем загружает только 5%.
Вы можете проверить это сами, выполнив mnist_ds_5p = tfds.load("mnist", split="train[:5%]")
затем mnist_ds = tfds.load("mnist", split="train")
После выполнения второй команды загрузка не выполняется. Это потому, что весь набор данных уже загружен и кэширован после выполнения первой команды!
Боюсь, что, поскольку многие наборы данных извлекаются из сжатой формы, я сомневаюсь, что есть простой способ избежать загрузки всего набора данных.
Ответ №2:
Да, это так; из документации:
разделить, какое разделение данных загружать (например, ‘train’, ‘test’, [‘train’, ‘test’], ‘train[80%:]’,…). Смотрите наше руководство по разделенному API. Если нет, вернет все разбиения в Dict[Split, tf.data.Набор данных]
Итак, если мне нужны первые 5% обучающего набора данных MNIST, я мог бы сделать это таким образом :
>>> mnist_ds_5p = tfds.load("mnist", split="train[:5%]")
>>> # looking at the size of the dataset
>>> mnist_ds_5p.cardinality()
<tf.Tensor: shape=(), dtype=int64, numpy=3000>
Набор данных MNIST содержит 60000 обучающих изображений, а у нас 3000, так что 5%.
Вы можете узнать больше о синтаксисе разделения, прочитав руководство по разделению и нарезке
Комментарии:
1. Спасибо! Я интерпретировал это как возможность устанавливать только пропорции разделения; не фактический размер каждого разделения.