This page was translated by the Cloud Translation API.
Switch to English

টেনসরফ্লো ডেটাসেটস

টিএনডিডিএস টেনসরফ্লো, জ্যাক্স এবং অন্যান্য মেশিন লার্নিং ফ্রেমওয়ার্কগুলির সাথে ব্যবহারের জন্য ব্যবহারের জন্য ব্যবহারযোগ্য ডেটাসেটের একটি সংগ্রহ সরবরাহ করে।

এটিtf.data.Dataset ডেটা ডাউনলোড এবং প্রস্তুত এবং একটিtf.data.Dataset (বা np.array ) তৈরি পরিচালনা করে।

টেনসরফ্লো.আর.জে দেখুন গুগল কোলাবে চালান গিটহাবের উত্স দেখুন

স্থাপন

টিএফডিএস দুটি প্যাকেজে বিদ্যমান:

  • pip install tensorflow-datasets : স্থিতিশীল সংস্করণ, প্রতি কয়েক মাসে প্রকাশিত হয়।
  • pip install tfds-nightly : প্রতিদিন প্রকাশিত হয়, এতে ডেটাসেটের শেষ সংস্করণ রয়েছে।

এই কোলাব tfds-nightly ব্যবহার করে:

pip install -q tfds-nightly tensorflow matplotlib
WARNING: You are using pip version 20.2.4; however, version 20.3.1 is available.
You should consider upgrading via the '/tmpfs/src/tf_docs_env/bin/python -m pip install --upgrade pip' command.

import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf

import tensorflow_datasets as tfds

উপলব্ধ ডেটাসেটগুলি সন্ধান করুন

সমস্ত ডেটাসেট নির্মাতারা tfds.core.DatasetBuilder এর সাবক্লাস। উপলব্ধ বিল্ডারদের তালিকা পেতে, tfds.list_builders() ব্যবহার করুন বা আমাদের ক্যাটালগটি দেখুন

tfds.list_builders()
['abstract_reasoning',
 'accentdb',
 'aeslc',
 'aflw2k3d',
 'ag_news_subset',
 'ai2_arc',
 'ai2_arc_with_ir',
 'amazon_us_reviews',
 'anli',
 'arc',
 'bair_robot_pushing_small',
 'bccd',
 'beans',
 'big_patent',
 'bigearthnet',
 'billsum',
 'binarized_mnist',
 'binary_alpha_digits',
 'blimp',
 'bool_q',
 'c4',
 'caltech101',
 'caltech_birds2010',
 'caltech_birds2011',
 'cars196',
 'cassava',
 'cats_vs_dogs',
 'celeb_a',
 'celeb_a_hq',
 'cfq',
 'cherry_blossoms',
 'chexpert',
 'cifar10',
 'cifar100',
 'cifar10_1',
 'cifar10_corrupted',
 'citrus_leaves',
 'cityscapes',
 'civil_comments',
 'clevr',
 'clic',
 'clinc_oos',
 'cmaterdb',
 'cnn_dailymail',
 'coco',
 'coco_captions',
 'coil100',
 'colorectal_histology',
 'colorectal_histology_large',
 'common_voice',
 'coqa',
 'cos_e',
 'cosmos_qa',
 'covid19sum',
 'crema_d',
 'curated_breast_imaging_ddsm',
 'cycle_gan',
 'dart',
 'deep_weeds',
 'definite_pronoun_resolution',
 'dementiabank',
 'diabetic_retinopathy_detection',
 'div2k',
 'dmlab',
 'downsampled_imagenet',
 'drop',
 'dsprites',
 'dtd',
 'duke_ultrasound',
 'e2e_cleaned',
 'emnist',
 'eraser_multi_rc',
 'esnli',
 'eurosat',
 'fashion_mnist',
 'flic',
 'flores',
 'food101',
 'forest_fires',
 'fuss',
 'gap',
 'geirhos_conflict_stimuli',
 'genomics_ood',
 'german_credit_numeric',
 'gigaword',
 'glue',
 'goemotions',
 'gpt3',
 'groove',
 'gtzan',
 'gtzan_music_speech',
 'hellaswag',
 'higgs',
 'horses_or_humans',
 'howell',
 'i_naturalist2017',
 'imagenet2012',
 'imagenet2012_corrupted',
 'imagenet2012_real',
 'imagenet2012_subset',
 'imagenet_a',
 'imagenet_r',
 'imagenet_resized',
 'imagenet_v2',
 'imagenette',
 'imagewang',
 'imdb_reviews',
 'irc_disentanglement',
 'iris',
 'kitti',
 'kmnist',
 'lambada',
 'lfw',
 'librispeech',
 'librispeech_lm',
 'libritts',
 'ljspeech',
 'lm1b',
 'lost_and_found',
 'lsun',
 'malaria',
 'math_dataset',
 'mctaco',
 'mlqa',
 'mnist',
 'mnist_corrupted',
 'movie_lens',
 'movie_rationales',
 'movielens',
 'moving_mnist',
 'multi_news',
 'multi_nli',
 'multi_nli_mismatch',
 'natural_questions',
 'natural_questions_open',
 'newsroom',
 'nsynth',
 'nyu_depth_v2',
 'omniglot',
 'open_images_challenge2019_detection',
 'open_images_v4',
 'openbookqa',
 'opinion_abstracts',
 'opinosis',
 'opus',
 'oxford_flowers102',
 'oxford_iiit_pet',
 'para_crawl',
 'patch_camelyon',
 'paws_wiki',
 'paws_x_wiki',
 'pet_finder',
 'pg19',
 'piqa',
 'places365_small',
 'plant_leaves',
 'plant_village',
 'plantae_k',
 'qa4mre',
 'qasc',
 'quac',
 'quickdraw_bitmap',
 'race',
 'radon',
 'reddit',
 'reddit_disentanglement',
 'reddit_tifu',
 'resisc45',
 'robonet',
 'rock_paper_scissors',
 'rock_you',
 's3o4d',
 'salient_span_wikipedia',
 'samsum',
 'savee',
 'scan',
 'scene_parse150',
 'scicite',
 'scientific_papers',
 'sentiment140',
 'shapes3d',
 'siscore',
 'smallnorb',
 'snli',
 'so2sat',
 'speech_commands',
 'spoken_digit',
 'squad',
 'stanford_dogs',
 'stanford_online_products',
 'starcraft_video',
 'stl10',
 'story_cloze',
 'sun397',
 'super_glue',
 'svhn_cropped',
 'ted_hrlr_translate',
 'ted_multi_translate',
 'tedlium',
 'tf_flowers',
 'the300w_lp',
 'tiny_shakespeare',
 'titanic',
 'trec',
 'trivia_qa',
 'tydi_qa',
 'uc_merced',
 'ucf101',
 'vctk',
 'vgg_face2',
 'visual_domain_decathlon',
 'voc',
 'voxceleb',
 'voxforge',
 'waymo_open_dataset',
 'web_nlg',
 'web_questions',
 'wider_face',
 'wiki40b',
 'wiki_bio',
 'wiki_table_text',
 'wikihow',
 'wikipedia',
 'wikipedia_toxicity_subtypes',
 'wine_quality',
 'winogrande',
 'wmt14_translate',
 'wmt15_translate',
 'wmt16_translate',
 'wmt17_translate',
 'wmt18_translate',
 'wmt19_translate',
 'wmt_t2t_translate',
 'wmt_translate',
 'wordnet',
 'wsc273',
 'xnli',
 'xquad',
 'xsum',
 'xtreme_pawsx',
 'xtreme_xnli',
 'yelp_polarity_reviews',
 'yes_no']

একটি ডেটাসেট লোড করুন

tfds.load

একটি ডেটাসেট লোড করার সবচেয়ে সহজ উপায় হল tfds.load । এটি হবে:

  1. ডেটা ডাউনলোড করুন এবং tfrecord ফাইল হিসাবে এটি সংরক্ষণ করুন।
  2. লোড tfrecord এবং তৈরিtf.data.Dataset
ds = tfds.load('mnist', split='train', shuffle_files=True)
assert isinstance(ds, tf.data.Dataset)
print(ds)
WARNING:absl:Dataset mnist is hosted on GCS. It will automatically be downloaded to your
local data directory. If you'd instead prefer to read directly from our public
GCS bucket (recommended if you're running on GCP), you can instead pass
`try_gcs=True` to `tfds.load` or set `data_dir=gs://tfds-data/datasets`.


Downloading and preparing dataset mnist/3.0.1 (download: 11.06 MiB, generated: 21.00 MiB, total: 32.06 MiB) to /home/kbuilder/tensorflow_datasets/mnist/3.0.1...
Dataset mnist downloaded and prepared to /home/kbuilder/tensorflow_datasets/mnist/3.0.1. Subsequent calls will reuse this data.
<_OptionsDataset shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>

কিছু সাধারণ যুক্তি:

  • split= : পড়ার জন্য কোন বিভাজন (যেমন 'train' , ['train', 'test'] , 'train[80%:]' , ...)। আমাদের বিভক্ত এপিআই গাইড দেখুন
  • shuffle_files= : প্রতিটি যুগের মধ্যে ফাইলগুলি শাফল করা হবে কিনা তা নিয়ন্ত্রণ করুন (টিএফডিএস একাধিক ছোট ফাইলগুলিতে বড় ডেটাসেট সংরক্ষণ করে)।
  • data_dir= : যেখানে ডেটাসেটটি সেভ করা হয়েছে (ডিফল্ট ~/tensorflow_datasets/ )
  • with_info=True : ডেটাসেট মেটাডেটা যুক্ত tfds.core.DatasetInfo
  • download=False : ডাউনলোড অক্ষম করুন

tfds.builder

tfds.load কাছাকাছি একটি পাতলা মোড়কের হয় tfds.core.DatasetBuilder । আপনি tfds.core.DatasetBuilder API ব্যবহার করে একই আউটপুট পেতে পারেন:

builder = tfds.builder('mnist')
# 1. Create the tfrecord files (no-op if already exists)
builder.download_and_prepare()
# 2. Load the `tf.data.Dataset`
ds = builder.as_dataset(split='train', shuffle_files=True)
print(ds)
<_OptionsDataset shapes: {image: (28, 28, 1), label: ()}, types: {image: tf.uint8, label: tf.int64}>

tfds build সিএলআই tfds build

আপনি যদি একটি নির্দিষ্ট ডেটাसेट জেনারেট করতে চান তবে আপনি tfds কমান্ড লাইনটি ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

tfds build mnist

উপলভ্য পতাকাগুলির জন্য ডকটি দেখুন।

কোনও ডেটাসেটের উপরে আইট্রেট করুন

ডিক হিসাবে

ডিফল্টরূপে,tf.data.Dataset অবজেক্টে tf.Tensor s এর একটি dict থাকে:

ds = tfds.load('mnist', split='train')
ds = ds.take(1)  # Only take a single example

for example in ds:  # example is `{'image': tf.Tensor, 'label': tf.Tensor}`
  print(list(example.keys()))
  image = example["image"]
  label = example["label"]
  print(image.shape, label)
['image', 'label']
(28, 28, 1) tf.Tensor(4, shape=(), dtype=int64)

dict কী নাম এবং কাঠামো সন্ধান করতে, আমাদের ক্যাটালগে ডেটাसेट ডকুমেন্টেশন দেখুন। উদাহরণস্বরূপ: mnist ডকুমেন্টেশন

টিপল হিসাবে ( as_supervised=True )

as_supervised=True ব্যবহার করে আপনি তদারকি করা ডেটাসেটের পরিবর্তে একটি টিপল (features, label) পেতে পারেন।

ds = tfds.load('mnist', split='train', as_supervised=True)
ds = ds.take(1)

for image, label in ds:  # example is (image, label)
  print(image.shape, label)
(28, 28, 1) tf.Tensor(4, shape=(), dtype=int64)

অসাড় হিসাবে ( tfds.as_numpy )

রূপান্তর করতে tfds.as_numpy ব্যবহার করুন:

  • tf.Tensor -> np.array
  • tf.data.Dataset -> Iterator[Tree[np.array]] ( Tree নির্বিচারে নেস্টেড Dict , Tuple হতে পারে)
ds = tfds.load('mnist', split='train', as_supervised=True)
ds = ds.take(1)

for image, label in tfds.as_numpy(ds):
  print(type(image), type(label), label)
<class 'numpy.ndarray'> <class 'numpy.int64'> 4

ব্যাচযুক্ত tf.Tensor হিসাবে ( batch_size=-1 )

batch_size=-1 ব্যবহার করে আপনি একক ব্যাচে পুরো ডেটাসেটটি লোড করতে পারেন।

এটি as_supervised=True এবং tfds.as_numpy সাথে ডেটা (np.array, np.array) হিসাবে পেতে পারে:

image, label = tfds.as_numpy(tfds.load(
    'mnist',
    split='test',
    batch_size=-1,
    as_supervised=True,
))

print(type(image), image.shape)
<class 'numpy.ndarray'> (10000, 28, 28, 1)

আপনার ডেটাसेट মেমরির সাথে ফিট হতে পারে এবং সমস্ত উদাহরণের একই আকার রয়েছে সে বিষয়ে সতর্ক হন।

শেষ থেকে শেষ পাইপলাইন তৈরি করুন

আরও যেতে, আপনি দেখতে পারেন:

ভিজ্যুয়ালাইজেশন

tfds.as_dataframe

tf.data.Dataset বস্তু পরিবর্তিত করা যায় pandas.DataFrame সঙ্গে tfds.as_dataframe উপর ভিজ্যুয়ালাইজ করা Colab

  • যোগ tfds.core.DatasetInfo হিসেবে দ্বিতীয় যুক্তি tfds.as_dataframe চিত্র, অডিও, গ্রন্থে, ভিডিও ঠাহর করা, ...
  • প্রথম x উদাহরণগুলি প্রদর্শন করতে ds.take(x) ব্যবহার করুন। pandas.DataFrame সম্পূর্ণ ডেটাসেটটি ইন-মেমরি লোড করবে এবং এটি প্রদর্শন করা খুব ব্যয়বহুল।
ds, info = tfds.load('mnist', split='train', with_info=True)

tfds.as_dataframe(ds.take(4), info)

tfds.show_ex উদাহরণ

tfds.show_examples আয় একটি matplotlib.figure.Figure (শুধুমাত্র ইমেজ ডেটাসেট এখন সমর্থিত):

ds, info = tfds.load('mnist', split='train', with_info=True)

fig = tfds.show_examples(ds, info)

পিএনজি

ডেটাसेट মেটাডেটা অ্যাক্সেস করুন

সমস্ত বিল্ডার একটি tfds.core.DatasetInfo ডেটাसेट মেটাডেটা যুক্ত বস্তু অন্তর্ভুক্ত।

এটির মাধ্যমে অ্যাক্সেস করা যায়:

ds, info = tfds.load('mnist', with_info=True)
builder = tfds.builder('mnist')
info = builder.info

ডেটাসেট তথ্যটিতে ডেটাसेट সম্পর্কে অতিরিক্ত তথ্য রয়েছে (সংস্করণ, উদ্ধৃতি, হোমপেজ, বিবরণ, ...)।

print(info)
tfds.core.DatasetInfo(
    name='mnist',
    version=3.0.1,
    description='The MNIST database of handwritten digits.',
    homepage='http://yann.lecun.com/exdb/mnist/',
    features=FeaturesDict({
        'image': Image(shape=(28, 28, 1), dtype=tf.uint8),
        'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),
    }),
    total_num_examples=70000,
    splits={
        'test': 10000,
        'train': 60000,
    },
    supervised_keys=('image', 'label'),
    citation="""@article{lecun2010mnist,
      title={MNIST handwritten digit database},
      author={LeCun, Yann and Cortes, Corinna and Burges, CJ},
      journal={ATT Labs [Online]. Available: http://yann.lecun.com/exdb/mnist},
      volume={2},
      year={2010}
    }""",
    redistribution_info=,
)


মেটাডেটা বৈশিষ্ট্যগুলি (লেবেলের নাম, চিত্রের আকার, ...)

tfds.features.FeatureDict অ্যাক্সেস করুন:

info.features
FeaturesDict({
    'image': Image(shape=(28, 28, 1), dtype=tf.uint8),
    'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10),
})

শ্রেণীর সংখ্যা, লেবেলের নাম:

print(info.features["label"].num_classes)
print(info.features["label"].names)
print(info.features["label"].int2str(7))  # Human readable version (8 -> 'cat')
print(info.features["label"].str2int('7'))
10
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
7
7

আকার, প্রকার:

print(info.features.shape)
print(info.features.dtype)
print(info.features['image'].shape)
print(info.features['image'].dtype)
{'image': (28, 28, 1), 'label': ()}
{'image': tf.uint8, 'label': tf.int64}
(28, 28, 1)
<dtype: 'uint8'>

বিভক্ত মেটাডেটা (যেমন বিভক্ত নাম, উদাহরণের সংখ্যা, ...)

tfds.core.SplitDict অ্যাক্সেস tfds.core.SplitDict :

print(info.splits)
{'test': <tfds.core.SplitInfo num_examples=10000>, 'train': <tfds.core.SplitInfo num_examples=60000>}

উপলব্ধ বিভক্ত:

print(list(info.splits.keys()))
['test', 'train']

স্বতন্ত্র বিভাজনের উপর তথ্য পান:

print(info.splits['train'].num_examples)
print(info.splits['train'].filenames)
print(info.splits['train'].num_shards)
60000
['mnist-train.tfrecord-00000-of-00001']
1

এটি সাবসপ্লিট এপিআইয়ের সাথেও কাজ করে:

print(info.splits['train[15%:75%]'].num_examples)
print(info.splits['train[15%:75%]'].file_instructions)
36000
[FileInstruction(filename='mnist-train.tfrecord-00000-of-00001', skip=9000, take=36000, num_examples=36000)]

সমস্যা সমাধান

ম্যানুয়াল ডাউনলোড (যদি ডাউনলোড ব্যর্থ হয়)

যদি কোনও কারণে ডাউনলোড ব্যর্থ হয় (যেমন অফলাইন, ...)। আপনি সর্বদা ম্যানুয়ালি ডেটা নিজেকে ডাউনলোড করুন এটা স্থাপন করতে পারেন manual_dir (ডিফল্ট ~/tensorflow_datasets/download/manual/

কোন ইউআরএল ডাউনলোড করবেন তা সন্ধানের জন্য এগুলি দেখুন:

NonMatchingChecksumError

টিএফডিএস ডাউনলোড করা ইউআরএলগুলির চেকসমগুলি বৈধ করে নির্ধারণকে নিশ্চিত করে। যদি NonMatchingChecksumError উত্থাপিত হয় তবে এটি নির্দেশ করতে পারে:

  • ওয়েবসাইটটি ডাউন হতে পারে (উদাঃ 503 status code )। ইউআরএল পরীক্ষা করুন।
  • গুগল ড্রাইভের ইউআরএলগুলির জন্য, পরে আবার চেষ্টা করুন যখন অনেক লোক একই ইউআরএল অ্যাক্সেস করে তখন ড্রাইভ কখনও কখনও ডাউনলোডগুলি প্রত্যাখ্যান করে। বাগ দেখুন
  • মূল ডেটাসেট ফাইলগুলি আপডেট করা হতে পারে। এক্ষেত্রে টিএফডিএস ডেটাসেট নির্মাতা আপডেট করা উচিত। দয়া করে একটি নতুন গিথুব ইস্যু বা PR খুলুন:
    • tfds build --register_checksums সহ নতুন চেকসাম নিবন্ধন করুন
    • শেষ পর্যন্ত ডেটাसेट জেনারেশন কোডটি আপডেট করুন।
    • ডেটাসেটের VERSION আপডেট করুন
    • RELEASE_NOTES ডেটাসেটটি আপডেট করুন: চেকসামগুলি কী কারণে পরিবর্তিত হয়েছিল? কিছু উদাহরণ পরিবর্তন হয়েছে?
    • ডেটাসেটটি এখনও নির্মিত যেতে পারে তা নিশ্চিত করুন।
    • আমাদের জনসংযোগ প্রেরণ করুন

উদ্ধৃতি

যদি আপনি কোনও কাগজের জন্য tensorflow-datasets ব্যবহার করেন তবে দয়া করে ব্যবহৃত ডেটাসেটগুলির জন্য নির্দিষ্ট কোনও উদ্ধৃতি (যা ডেটাসেটের ক্যাটালগটিতে পাওয়া যাবে) ছাড়াও নিম্নলিখিত উদ্ধৃতিটি অন্তর্ভুক্ত করুন।

@misc{TFDS,
  title = { {TensorFlow Datasets}, A collection of ready-to-use datasets},
  howpublished = {\url{https://www.tensorflow.org/datasets} },
}