דף זה תורגם על ידי Cloud Translation API.
Switch to English

גרסת ערכות נתונים

סֵמַנטִי

כל DatasetBuilder המוגדר ב- TFDS מגיע עם גרסה, למשל:

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

הגרסה עוקבת אחר גרסת 2.0.0 של Semantic : MAJOR.MINOR.PATCH . מטרת הגירסה היא להיות מסוגלת להבטיח את ההעתקה: טעינת מערך נתונים נתון בגירסה קבועה מניבה את אותם נתונים. באופן יותר ספציפי:

  • אם מגדילים את גרסת ה- PATCH , הנתונים שנקראו על ידי הלקוח זהים, אם כי נתונים עשויים להיות בהמשכים באופן שונה בדיסק, או שהמטא נתונים עשויים להשתנות. עבור כל פרוסה נתונה, ה- API של הפרוסה מחזיר את אותה קבוצת רשומות.
  • אם מגדילים את גרסת ה- MINOR , הנתונים הקיימים שקוראים על ידי הלקוח זהים, אך ישנם נתונים נוספים (תכונות בכל רשומה). עבור כל פרוסה נתונה, ה- API של הפרוסה מחזיר את אותה קבוצת רשומות.
  • אם מגדילים את גרסת ה- MAJOR , הנתונים הקיימים שונו ו / או ממשק ה- API של הפרוסה לא בהכרח מחזיר את אותה קבוצת רשומות עבור פרוסה נתונה.

כאשר מתבצע שינוי קוד בספריית TFDS ושינוי קוד משפיע על אופן ההמשכה ו / או קריאה של מערך נתונים על ידי הלקוח, אז גירסת הבונה המתאימה מוגדלת על פי ההנחיות שלעיל.

שים לב שהסמנטיקה שלעיל היא המאמץ הטוב ביותר, וייתכן שיש באגים שלא הבחינו שמשפיעים על מערך נתונים בזמן שהגירסה לא הוגדלה. באגים כאלה מתוקנים בסופו של דבר, אך אם אתה סומך מאוד על גרסת הגרסאות, אנו ממליצים לך להשתמש ב- TFDS מגירסה שפורסמה (בניגוד ל- HEAD ).

כמו כן, שים לב שלערכות נתונים מסוימות יש ערכת גרסאות אחרת שאינה תלויה בגירסת TFDS. לדוגמא, למערך הנתונים של Open Open יש כמה גרסאות, וב- 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 שניתן להשתמש בה כדי להוריד ולהכין את מערך הנתונים בגירסה זו.

טוען גרסה ספציפית

בעת טעינת מערך נתונים או 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 . כאשר זה המקרה, 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.*.*')