הוסף אוסף מערכי נתונים חדש

עקוב אחר המדריך הזה כדי ליצור אוסף מערכי נתונים חדש (ב-TFDS או במאגר משלך).

סקירה כללית

כדי להוסיף אוסף נתונים חדש my_collection ל-TFDS, המשתמשים צריכים ליצור תיקיית my_collection המכילה את הקבצים הבאים:

my_collection/
  __init__.py
  my_collection.py # Dataset collection definition
  my_collection_test.py # (Optional) test
  description.md # (Optional) collection description (if not included in my_collection.py)
  citations.md # (Optional) collection citations (if not included in my_collection.py)

כמוסכמה, יש להוסיף אוספי נתונים חדשים לתיקיית tensorflow_datasets/dataset_collections/ במאגר TFDS.

כתוב את אוסף הנתונים שלך

כל אוספי הנתונים מיושמים תת-מחלקות של tfds.core.dataset_collection_builder.DatasetCollection .

הנה דוגמה מינימלית של בונה אוסף נתונים, המוגדר בקובץ my_collection.py :

import collections
from typing import Mapping
from tensorflow_datasets.core import dataset_collection_builder
from tensorflow_datasets.core import naming

class MyCollection(dataset_collection_builder.DatasetCollection):
  """Dataset collection builder my_dataset_collection."""

  @property
  def info(self) -> dataset_collection_builder.DatasetCollectionInfo:
    return dataset_collection_builder.DatasetCollectionInfo.from_cls(
        dataset_collection_class=self.__class__,
        description="my_dataset_collection description.",
        release_notes={
            "1.0.0": "Initial release",
        },
    )

  @property
  def datasets(
      self,
  ) -> Mapping[str, Mapping[str, naming.DatasetReference]]:
    return collections.OrderedDict({
        "1.0.0":
            naming.references_for({
                "dataset_1": "natural_questions/default:0.0.2",
                "dataset_2": "media_sum:1.0.0",
            }),
        "1.1.0":
            naming.references_for({
                "dataset_1": "natural_questions/longt5:0.1.0",
                "dataset_2": "media_sum:1.0.0",
                "dataset_3": "squad:3.0.0"
            })
    })

הסעיפים הבאים מתארים את 2 השיטות המופשטות להחלפה.

info : מטא נתונים של אוסף נתונים

שיטת info מחזירה את dataset_collection_builder.DatasetCollectionInfo המכיל את המטא נתונים של האוסף.

מידע אוסף הנתונים מכיל ארבעה שדות:

  • שם: שם אוסף הנתונים.
  • תיאור: תיאור בפורמט סימון של אוסף הנתונים. ישנן שתי דרכים להגדיר תיאור של אוסף מערך נתונים: (1) כמחרוזת (מרובת שורות) ישירות בקובץ my_collection.py של האוסף - בדומה לכך שזה כבר נעשה עבור מערכי נתונים של TFDS; (2) בקובץ description.md , אותו יש למקם בתיקיית אוסף הנתונים.
  • release_notes: מיפוי מהגרסה של אוסף הנתונים להערות הגרסה המקבילות.
  • ציטוט: ציטוט אופציונלי (רשימה של) ציטוטים של BibTeX עבור אוסף הנתונים. ישנן שתי דרכים להגדיר ציטוט של אוסף מערך נתונים: (1) כמחרוזת (מרובת שורות) ישירות בקובץ my_collection.py של האוסף - בדומה לכך שזה כבר נעשה עבור מערכי נתונים של TFDS; (2) בקובץ citations.bib , אותו יש למקם בתיקיית אוסף הנתונים.

datasets : הגדר את מערכי הנתונים באוסף

שיטת datasets מחזירה את מערכי הנתונים של TFDS באוסף.

הוא מוגדר כמילון של גרסאות, המתארות את התפתחות אוסף הנתונים.

עבור כל גרסה, מערכי הנתונים הכלולים של TFDS מאוחסנים כמילון משמות של מערכי נתונים ועד ל- naming.DatasetReference . לדוגמה:

class MyCollection(dataset_collection_builder.DatasetCollection):
  ...
  @property
  def datasets(self):
    return {
        "1.0.0": {
            "yes_no":
                naming.DatasetReference(
                    dataset_name="yes_no", version="1.0.0"),
            "sst2":
                naming.DatasetReference(
                    dataset_name="glue", config="sst2", version="2.0.0"),
            "assin2":
                naming.DatasetReference(
                    dataset_name="assin2", version="1.0.0"),
        },
        ...
    }

השיטה naming.references_for מספקת דרך קומפקטית יותר לבטא את אותו הדבר כמו לעיל:

class MyCollection(dataset_collection_builder.DatasetCollection):
  ...
  @property
  def datasets(self):
    return {
        "1.0.0":
            naming.references_for({
                "yes_no": "yes_no:1.0.0",
                "sst2": "glue/sst:2.0.0",
                "assin2": "assin2:1.0.0",
            }),
        ...
    }

בדוק ביחידה את אוסף הנתונים שלך

DatasetCollectionTestBase היא מחלקת בדיקה בסיסית עבור אוספי נתונים. הוא מספק מספר בדיקות פשוטות כדי להבטיח שאוסף הנתונים רשום כהלכה, ומערכי הנתונים שלו קיימים ב-TFDS.

תכונת המחלקה היחידה שיש להגדיר היא DATASET_COLLECTION_CLASS , אשר מציינת את אובייקט המחלקה של אוסף מערך הנתונים לבדיקה.

בנוסף, משתמשים יכולים להגדיר את תכונות המחלקה הבאות:

  • VERSION : הגרסה של אוסף הנתונים ששימשה להפעלת הבדיקה (ברירת המחדל היא לגרסה העדכנית ביותר).
  • DATASETS_TO_TEST : רשימה המכילה את מערכי הנתונים לבדיקת קיומם ב-TFDS (ברירת המחדל לכל מערכי הנתונים באוסף).
  • CHECK_DATASETS_VERSION : האם לבדוק את קיומם של מערכי הנתונים המנוסים באוסף הנתונים, או עבור גרסאות ברירת המחדל שלהם (ברירת המחדל ל-true).

הבדיקה התקינה הפשוטה ביותר עבור אוסף מערכי נתונים תהיה:

from tensorflow_datasets.testing.dataset_collection_builder_testing import DatasetCollectionTestBase
from . import my_collection

class TestMyCollection(DatasetCollectionTestBase):
  DATASET_COLLECTION_CLASS = my_collection.MyCollection

הפעל את הפקודה הבאה כדי לבדוק את אוסף הנתונים.

python my_dataset_test.py

מָשׁוֹב

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

אנא שתף ​​את המשוב שלך על GitHub .