ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

تعيين إصدارات مجموعات البيانات

متعلق بدلالات الألفاظ

DatasetBuilder كل DatasetBuilder معرّف في TFDS مع إصدار ، على سبيل المثال:

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

يتبع الإصدار 2.0.0 Semantic Versioning : MAJOR.MINOR.PATCH . الغرض من الإصدار هو أن يكون قادرًا على ضمان قابلية التكرار: تحميل مجموعة بيانات معينة بإصدار ثابت ينتج عنه نفس البيانات. اكثر تحديدا:

  • إذا تم زيادة إصدار PATCH ، فإن البيانات التي يقرأها العميل هي نفسها ، على الرغم من أن البيانات قد تكون متسلسلة بشكل مختلف على القرص ، أو قد تتغير البيانات الوصفية. لأي شريحة معينة ، ترجع واجهة برمجة تطبيقات التقطيع نفس مجموعة السجلات.
  • إذا تم زيادة إصدار MINOR ، فإن البيانات الموجودة كما قرأها العميل هي نفسها ، ولكن هناك بيانات إضافية (ميزات في كل سجل). لأي شريحة معينة ، ترجع واجهة برمجة تطبيقات التقطيع نفس مجموعة السجلات.
  • إذا تم زيادة الإصدار MAJOR ، فقد تم تغيير البيانات الموجودة و / أو لا تقوم واجهة برمجة تطبيقات التقطيع بالضرورة بإرجاع نفس مجموعة السجلات لشريحة معينة.

عندما يتم إجراء تغيير في الكود على مكتبة TFDS ويؤثر هذا التغيير في الكود على الطريقة التي يتم بها تسلسل مجموعة البيانات و / أو قراءتها من قبل العميل ، فإن إصدار المنشئ المقابل يزداد وفقًا للإرشادات المذكورة أعلاه.

لاحظ أن الدلالي أعلاه هو أفضل جهد ، وقد تكون هناك أخطاء لم يتم ملاحظتها تؤثر على مجموعة بيانات بينما لم تتم زيادة الإصدار. يتم إصلاح هذه الأخطاء في النهاية ، ولكن إذا كنت تعتمد بشدة على الإصدار ، فإننا ننصحك باستخدام TFDS من إصدار تم إصداره (على عكس HEAD ).

لاحظ أيضًا أن بعض مجموعات البيانات لها مخطط إصدار آخر مستقل عن إصدار TFDS. على سبيل المثال ، تحتوي مجموعة بيانات Open Images على العديد من الإصدارات ، وفي TFDS ، يكون البناة open_images_v4 هم 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 والذي يمكن استخدامه لتنزيل مجموعة البيانات وإعدادها في هذا الإصدار.

تحميل نسخة محددة

عند تحميل مجموعة بيانات أو 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 للإصدار فقط ؛
  • أعلن عن إصدار مجموعة البيانات الذي تم استخدامه في نتائجك.

القيام بذلك من شأنه أن يسهل على نفسك في المستقبل وعلى القراء والمراجعين إعادة إنتاج نتائجك.

التجارب

لإدخال التغييرات تدريجياً في TFDS التي تؤثر على العديد من منشئي مجموعات البيانات ، قدمنا ​​مفهوم التجارب. عند تقديم التجربة لأول مرة ، يتم تعطيلها افتراضيًا ، ولكن يمكن أن تقرر إصدارات معينة من مجموعة البيانات تمكينها. سيتم إجراء هذا عادةً على الإصدارات "المستقبلية" (لم يتم جعلها أساسية بعد) في البداية. فمثلا:

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 في core/utils/version.py .

BUILDER_CONFIGS والإصدارات

تحدد بعض مجموعات البيانات عدة BUILDER_CONFIGS . في هذه الحالة ، يتم تحديد version والإصدارات supported_versions في كائنات التكوين نفسها. بخلاف ذلك ، فإن الدلالات والاستخدام متطابقان. فمثلا:

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.*.*')