یک مجموعه داده جدید اضافه کنید

این راهنما را برای ایجاد یک مجموعه داده جدید (چه در 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 را که حاوی فراداده های مجموعه است برمی گرداند.

اطلاعات مجموعه داده شامل چهار فیلد است:

  • name: نام مجموعه داده.
  • توضیحات: توصیفی با قالب بندی علامت گذاری شده از مجموعه داده. دو راه برای تعریف توضیحات مجموعه داده وجود دارد: (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 ذخیره می شود.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 : وجود مجموعه داده های نسخه شده در مجموعه داده بررسی شود یا نسخه های پیش فرض آنها (از پیش فرض به درست).

ساده ترین آزمون معتبر برای مجموعه داده ها این خواهد بود:

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 به اشتراک بگذارید.