एक नया डेटासेट संग्रह जोड़ें

नया डेटासेट संग्रह (या तो टीएफडीएस में या अपने स्वयं के भंडार में) बनाने के लिए इस गाइड का पालन करें।

सिंहावलोकन

टीएफडीएस में एक नया डेटासेट संग्रह my_collection जोड़ने के लिए, उपयोगकर्ताओं को निम्नलिखित फ़ाइलों वाला एक my_collection फ़ोल्डर जेनरेट करना होगा:

my_collection/
  __init__.py
  my_collection.py # Dataset collection definition
  my_collection_test.py # (Optional) test
  description.md # (Optional) collection description (if not included in my_collection.py)
  citations.md # (Optional) collection citations (if not included in my_collection.py)

एक परंपरा के रूप में, नए डेटासेट संग्रह को TFDS रिपॉजिटरी में tensorflow_datasets/dataset_collections/ फ़ोल्डर में जोड़ा जाना चाहिए।

अपना डेटासेट संग्रह लिखें

सभी डेटासेट संग्रह tfds.core.dataset_collection_builder.DatasetCollection के उपवर्ग लागू किए गए हैं।

यहां डेटासेट संग्रह बिल्डर का एक न्यूनतम उदाहरण दिया गया है, जिसे my_collection.py फ़ाइल में परिभाषित किया गया है:

import collections
from typing import Mapping
from tensorflow_datasets.core import dataset_collection_builder
from tensorflow_datasets.core import naming

class MyCollection(dataset_collection_builder.DatasetCollection):
  """Dataset collection builder my_dataset_collection."""

  @property
  def info(self) -> dataset_collection_builder.DatasetCollectionInfo:
    return dataset_collection_builder.DatasetCollectionInfo.from_cls(
        dataset_collection_class=self.__class__,
        description="my_dataset_collection description.",
        release_notes={
            "1.0.0": "Initial release",
        },
    )

  @property
  def datasets(
      self,
  ) -> Mapping[str, Mapping[str, naming.DatasetReference]]:
    return collections.OrderedDict({
        "1.0.0":
            naming.references_for({
                "dataset_1": "natural_questions/default:0.0.2",
                "dataset_2": "media_sum:1.0.0",
            }),
        "1.1.0":
            naming.references_for({
                "dataset_1": "natural_questions/longt5:0.1.0",
                "dataset_2": "media_sum:1.0.0",
                "dataset_3": "squad:3.0.0"
            })
    })

अगले अनुभाग ओवरराइट करने की 2 अमूर्त विधियों का वर्णन करते हैं।

info : डेटासेट संग्रह मेटाडेटा

info विधि संग्रह के मेटाडेटा वाले dataset_collection_builder.DatasetCollectionInfo को लौटाती है।

डेटासेट संग्रह जानकारी में चार फ़ील्ड हैं:

  • नाम: डेटासेट संग्रह का नाम.
  • विवरण: डेटासेट संग्रह का एक मार्कडाउन-स्वरूपित विवरण। डेटासेट संग्रह के विवरण को परिभाषित करने के दो तरीके हैं: (1) सीधे संग्रह की my_collection.py फ़ाइल में एक (मल्टी-लाइन) स्ट्रिंग के रूप में - उसी तरह जैसे कि यह टीएफडीएस डेटासेट के लिए पहले से ही किया गया है; (2) एक description.md फ़ाइल में, जिसे डेटासेट संग्रह फ़ोल्डर में रखा जाना चाहिए।
  • रिलीज़_नोट्स: डेटासेट संग्रह के संस्करण से संबंधित रिलीज़ नोट्स तक मैपिंग।
  • उद्धरण: डेटासेट संग्रह के लिए एक वैकल्पिक (सूची) BibTeX उद्धरण। डेटासेट संग्रह के उद्धरण को परिभाषित करने के दो तरीके हैं: (1) सीधे संग्रह की my_collection.py फ़ाइल में एक (मल्टी-लाइन) स्ट्रिंग के रूप में - उसी तरह जैसे कि यह टीएफडीएस डेटासेट के लिए पहले से ही किया गया है; (2) एक citations.bib फ़ाइल में, जिसे डेटासेट संग्रह फ़ोल्डर में रखा जाना चाहिए।

datasets : संग्रह में डेटासेट को परिभाषित करें

datasets विधि संग्रह में टीएफडीएस डेटासेट लौटाती है।

इसे संस्करणों के शब्दकोश के रूप में परिभाषित किया गया है, जो डेटासेट संग्रह के विकास का वर्णन करता है।

प्रत्येक संस्करण के लिए, शामिल टीएफडीएस डेटासेट को डेटासेट नामों से लेकर naming.DatasetReference तक एक शब्दकोश के रूप में संग्रहीत किया जाता है। उदाहरण के लिए:

class MyCollection(dataset_collection_builder.DatasetCollection):
  ...
  @property
  def datasets(self):
    return {
        "1.0.0": {
            "yes_no":
                naming.DatasetReference(
                    dataset_name="yes_no", version="1.0.0"),
            "sst2":
                naming.DatasetReference(
                    dataset_name="glue", config="sst2", version="2.0.0"),
            "assin2":
                naming.DatasetReference(
                    dataset_name="assin2", version="1.0.0"),
        },
        ...
    }

naming.references_for विधि ऊपर बताए अनुसार इसे व्यक्त करने का एक अधिक संक्षिप्त तरीका प्रदान करती है:

class MyCollection(dataset_collection_builder.DatasetCollection):
  ...
  @property
  def datasets(self):
    return {
        "1.0.0":
            naming.references_for({
                "yes_no": "yes_no:1.0.0",
                "sst2": "glue/sst:2.0.0",
                "assin2": "assin2:1.0.0",
            }),
        ...
    }

अपने डेटासेट संग्रह का इकाई-परीक्षण करें

DatasetCollectionTestBase डेटासेट संग्रह के लिए एक आधार परीक्षण वर्ग है। यह गारंटी देने के लिए कई सरल जांच प्रदान करता है कि डेटासेट संग्रह सही ढंग से पंजीकृत है, और इसके डेटासेट टीएफडीएस में मौजूद हैं।

सेट करने के लिए एकमात्र वर्ग विशेषता DATASET_COLLECTION_CLASS है, जो परीक्षण के लिए डेटासेट संग्रह के वर्ग ऑब्जेक्ट को निर्दिष्ट करता है।

इसके अतिरिक्त, उपयोगकर्ता निम्नलिखित वर्ग विशेषताएँ सेट कर सकते हैं:

  • VERSION : परीक्षण चलाने के लिए उपयोग किए गए डेटासेट संग्रह का संस्करण (नवीनतम संस्करण के लिए डिफ़ॉल्ट)।
  • DATASETS_TO_TEST : टीएफडीएस में अस्तित्व का परीक्षण करने के लिए डेटासेट वाली सूची (संग्रह में सभी डेटासेट के लिए डिफ़ॉल्ट)।
  • CHECK_DATASETS_VERSION : क्या डेटासेट संग्रह में संस्करणित डेटासेट के अस्तित्व की जांच करनी है, या उनके डिफ़ॉल्ट संस्करणों की (डिफ़ॉल्ट सत्य पर)।

डेटासेट संग्रह के लिए सबसे सरल वैध परीक्षण होगा:

from tensorflow_datasets.testing.dataset_collection_builder_testing import DatasetCollectionTestBase
from . import my_collection

class TestMyCollection(DatasetCollectionTestBase):
  DATASET_COLLECTION_CLASS = my_collection.MyCollection

डेटासेट संग्रह का परीक्षण करने के लिए निम्न कमांड चलाएँ।

python my_dataset_test.py

प्रतिक्रिया

हम डेटासेट निर्माण वर्कफ़्लो में सुधार करने के लिए लगातार प्रयास कर रहे हैं, लेकिन ऐसा केवल तभी कर सकते हैं जब हम मुद्दों से अवगत हों। डेटासेट संग्रह बनाते समय आपको किन समस्याओं या त्रुटियों का सामना करना पड़ा? क्या कोई ऐसा हिस्सा था जो भ्रमित करने वाला था, या पहली बार काम नहीं कर रहा था?

कृपया GitHub पर अपनी प्रतिक्रिया साझा करें।