این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

نسخه سازی مجموعه داده ها

معنایی

هر DatasetBuilder تعریف شده در TFDS با یک نسخه همراه است ، به عنوان مثال:

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

نسخه زیر به MAJOR.MINOR.PATCH نسخه MAJOR.MINOR.PATCH 2.0.0 است : MAJOR.MINOR.PATCH . هدف از این نسخه است که می تواند قابلیت تولید مجدد را تضمین کند: بارگیری یک مجموعه داده داده شده در یک نسخه ثابت ، داده های مشابه را به دست می آورد. به طور خاص:

  • اگر نسخه PATCH افزایش یابد ، داده هایی که توسط مشتری خوانده می شود یکسان است ، اگرچه ممکن است داده ها به صورت متفاوتی روی دیسک سریال شوند ، یا ممکن است فوق داده تغییر کرده باشد. برای هر برش داده شده ، API قطعه قطعه همان مجموعه رکوردها را برمی گرداند.
  • اگر نسخه MINOR افزایش یابد ، داده های موجود که توسط مشتری خوانده می شود یکسان است ، اما داده های اضافی (ویژگی ها در هر ضبط) وجود دارد. برای هر برش داده شده ، API قطعه قطعه همان مجموعه رکوردها را برمی گرداند.
  • اگر نسخه MAJOR بیشتر شود ، داده های موجود تغییر یافته است و / یا API برش لزوماً همان مجموعه از پرونده ها را برای یک قطعه معین باز نمی گرداند.

هنگامی که یک تغییر کد در کتابخانه TFDS ایجاد شده و تغییر کد در نحوه سریال سازی و / یا خوانده شده توسط مشتری تأثیر می گذارد ، پس نسخه سازنده مربوطه مطابق دستورالعمل های فوق افزوده می شود.

توجه داشته باشید که معنای فوق بهترین تلاش است ، و ممکن است اشکالات ناآشنایی وجود داشته باشد که در یک نسخه افزوده ، روی یک مجموعه داده تأثیر بگذارد. چنین اشکالات سرانجام برطرف می شوند ، اما اگر به شدت به نسخه سازی اعتماد دارید ، توصیه می کنیم از 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 جزئی از تنها نسخه؛
  • تبلیغ کنید کدام نسخه از مجموعه داده در نتایج شما استفاده شده است.

انجام این کار باعث می شود که بتوانید نتایج خود را برای خوانندگان آینده و خوانندگان خود آسان کنید.

آزمایش

برای تغییر تدریجی تغییرات در 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} مشخص نمی کند. {experiment: False} ،) ، این آزمایش قابل حذف است.

آزمایش ها و توضیحات آنها در core/utils/version.py .

BUILDER_CONFIGS و نسخه ها

برخی از مجموعه داده ها چندین 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.*.*')