تاریخ را ذخیره کنید! Google I / O 18-20 مه بازمی گردد اکنون ثبت نام کنید
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

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

معنایی

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

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

نسخه از نسخه معنایی 2.0.0 MAJOR.MINOR.PATCH : 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} باقی نمانده است) ، آزمایش را می توان حذف کرد.

آزمایشات و توضیحات آنها در 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.*.*')