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

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

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

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

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

يتبع الإصدار الإصدار الدلالية 2.0.0 : 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.*.*')