इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

डेटासेट वर्जनिंग

सिमेंटिक

DatasetBuilder परिभाषित प्रत्येक DatasetBuilder संस्करण के साथ आता है, उदाहरण के लिए:

 class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version("1.0.0")
 

यह संस्करण सिमेंटिक वर्जनिंग 2.0.0 : MAJOR.MINOR.PATCH अनुसरण करता है। संस्करण का उद्देश्य प्रजनन योग्यता की गारंटी देने में सक्षम होना है: किसी दिए गए संस्करण में दिए गए डेटासेट को लोड करने से समान डेटा प्राप्त होता है। अधिक विशेष रूप से:

  • यदि PATCH संस्करण PATCH है, तो क्लाइंट द्वारा पढ़ा जाने वाला डेटा समान है, हालाँकि डेटा को डिस्क पर अलग-अलग क्रमबद्ध किया जा सकता है, या मेटाडेटा परिवर्तित हो सकता है। किसी भी स्लाइस के लिए, स्लाइसिंग एपीआई रिकॉर्ड का एक ही सेट लौटाता है।
  • यदि MINOR संस्करण MINOR है, तो ग्राहक द्वारा पढ़ा गया मौजूदा डेटा समान है, लेकिन अतिरिक्त डेटा (प्रत्येक रिकॉर्ड में विशेषताएं) है। किसी भी स्लाइस के लिए, स्लाइसिंग एपीआई रिकॉर्ड का एक ही सेट लौटाता है।
  • यदि MAJOR संस्करण MAJOR है, तो मौजूदा डेटा को बदल दिया गया है और / या स्लाइसिंग एपीआई किसी दिए गए स्लाइस के लिए रिकॉर्ड का एक ही सेट वापस नहीं करता है।

जब कोई कोड परिवर्तन TFDS लाइब्रेरी में किया जाता है और उस कोड में परिवर्तन होता है, जिस तरह से एक डेटासेट को सिलसिलेवार और / या क्लाइंट द्वारा पढ़ा जा रहा है, तो उपरोक्त दिशानिर्देशों के अनुसार संबंधित बिल्डर संस्करण को बढ़ाया जाता है।

ध्यान दें कि उपरोक्त सिमेंटिक सबसे अच्छा प्रयास है, और एक डेटासेट को प्रभावित करने वाले अन-नोट बग हो सकते हैं, जबकि संस्करण में वृद्धि नहीं की गई थी। इस तरह के कीड़े अंततः तय हो जाते हैं, लेकिन यदि आप संस्करण पर बहुत भरोसा करते हैं, तो हम आपको एक जारी किए गए संस्करण से टीएफडीएस का उपयोग करने की सलाह देते हैं (जैसा कि HEAD विपरीत)।

यह भी ध्यान दें कि कुछ डेटासेट्स में TFDS संस्करण से स्वतंत्र एक और संस्करण योजना है। उदाहरण के लिए, Open Images डेटासेट के कई संस्करण हैं, और TFDS में, इसी बिल्डरों को open_images_v4 , open_images_v5 , ...

समर्थित संस्करण

एक DatasetBuilder कई संस्करणों का समर्थन कर सकता है, जो विहित संस्करण की तुलना में उच्च या निम्न दोनों हो सकते हैं। उदाहरण के लिए:

 class Imagenet2012(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version('2.0.1', 'Encoding fix. No changes from user POV')
  SUPPORTED_VERSIONS = [
      tfds.core.Version('3.0.0', 'S3: tensorflow.org/datasets/splits'),
      tfds.core.Version('1.0.0'),
      tfds.core.Version('0.0.9', tfds_version_to_prepare="v1.0.0"),
  ]
 

पुराने संस्करण का समर्थन जारी रखने का विकल्प केस-बाय-केस आधार पर किया जाता है, जो मुख्य रूप से डाटासेट और संस्करण की लोकप्रियता पर आधारित होता है। आखिरकार, हम आदर्श रूप से प्रति डेटासेट सीमित संस्करण का समर्थन करना चाहते हैं। उपरोक्त उदाहरण में, हम देख सकते हैं कि 2.0.0 संस्करण अब समर्थित नहीं है, जैसा कि पाठक परिप्रेक्ष्य से 2.0.1 समान है।

विहित संस्करण संख्या की तुलना में अधिक संख्या वाले समर्थित संस्करणों को प्रयोगात्मक माना जाता है और उन्हें तोड़ा जा सकता है। हालांकि उन्हें अंततः विहित बनाया जाएगा।

एक संस्करण tfds_version_to_prepare निर्दिष्ट कर सकता है। इसका मतलब यह है कि इस डाटासेट संस्करण का उपयोग केवल TFDS कोड के वर्तमान संस्करण के साथ किया जा सकता है यदि यह पहले से ही कोड के पुराने संस्करण द्वारा तैयार किया गया है, लेकिन इसे तैयार नहीं किया जा सकता है। tfds_version_to_prepare का मान tfds_version_to_prepare के अंतिम ज्ञात संस्करण को निर्दिष्ट करता है जिसका उपयोग इस संस्करण में डेटासेट डाउनलोड करने और तैयार करने के लिए किया जा सकता है।

एक विशिष्ट संस्करण लोड हो रहा है

डेटासेट या डेटासेट को लोड करते DatasetBuilder , आप उपयोग करने के लिए संस्करण निर्दिष्ट कर सकते हैं। उदाहरण के लिए:

 tfds.load('imagenet2012:2.0.1')
tfds.builder('imagenet2012:2.0.1')

tfds.load('imagenet2012:2.0.0')  # Error: unsupported version.

# Resolves to 3.0.0 for now, but would resolve to 3.1.1 if when added.
tfds.load('imagenet2012:3.*.*')
 

यदि किसी प्रकाशन के लिए TFDS का उपयोग किया जाता है, तो हम आपको इसकी सलाह देते हैं:

  • केवल संस्करण के MAJOR घटक को ठीक करें ;
  • आपके परिणामों में डेटासेट के किस संस्करण का उपयोग किया गया था।

ऐसा करने से आपके भविष्य के स्वयं, आपके पाठकों और समीक्षकों को आपके परिणामों को पुन: प्रस्तुत करना आसान हो सकता है।

प्रयोगों

टीएफडीएस में परिवर्तन को धीरे-धीरे रोल आउट करने के लिए जो कई डेटासेट बिल्डरों को प्रभावित कर रहे हैं, हमने प्रयोगों की धारणा पेश की। जब पहली बार पेश किया जाता है, तो एक प्रयोग डिफ़ॉल्ट रूप से अक्षम होता है, लेकिन विशिष्ट डेटासेट संस्करण इसे सक्षम करने का निर्णय ले सकते हैं। यह आम तौर पर पहले "भविष्य" संस्करणों (अभी तक विहित नहीं बनाया गया) पर किया जाएगा। उदाहरण के लिए:

 class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version("1.0.0")
  SUPPORTED_VERSIONS = [
      tfds.core.Version("2.0.0", "EXP1: Opt-in for experiment 1",
                        experiments={tfds.core.Experiment.EXP1: True}),
  ]
 

एक बार जब किसी प्रयोग को अपेक्षित रूप से सत्यापित करने के लिए सत्यापित किया गया है, तो इसे सभी या अधिकांश डेटासेटों तक विस्तारित किया जाएगा, जिस बिंदु पर इसे डिफ़ॉल्ट रूप से सक्षम किया जा सकता है, और उपरोक्त परिभाषा तब दिखाई देगी:

 class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version("1.0.0",
                              experiments={tfds.core.Experiment.EXP1: False})
  SUPPORTED_VERSIONS = [
      tfds.core.Version("2.0.0", "EXP1: Opt-in for experiment 1"),
  ]
 

एक बार सभी डेटासेट संस्करणों में प्रयोग किया जाता है ( {experiment: False} ) निर्दिष्ट करने वाला कोई डेटासेट संस्करण नहीं है, प्रयोग हटाया जा सकता है।

प्रयोगों और उनके विवरणों को core/utils/version.py में परिभाषित किया गया है।

BUILDER_CONFIGS और संस्करण

कुछ डेटासेट कई BUILDER_CONFIGS को परिभाषित BUILDER_CONFIGS । जब यह मामला है, version और supported_versions परिभाषित कर रहे हैं config खुद को वस्तुओं पर। इसके अलावा, शब्दार्थ और उपयोग समान हैं। उदाहरण के लिए:

 class OpenImagesV4(tfds.core.GeneratorBasedBuilder):

  BUILDER_CONFIGS = [
      OpenImagesV4Config(
          name='original',
          version=tfds.core.Version('0.2.0'),
          supported_versions=[
            tfds.core.Version('1.0.0', "Major change in data"),
          ],
          description='Images at their original resolution and quality.'),
      ...
  ]

tfds.load('open_images_v4/original:1.*.*')