إضافة مجموعة بيانات جديدة

اتبع هذا الدليل لإنشاء مجموعة بيانات جديدة (إما في 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"
            })
    })

تصف الأقسام التالية الطريقتين المجردتين للكتابة فوق.

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

تعليق

نحن نحاول باستمرار تحسين سير عمل إنشاء مجموعة البيانات، ولكن لا يمكننا القيام بذلك إلا إذا كنا على دراية بالمشكلات. ما هي المشكلات أو الأخطاء التي واجهتها أثناء إنشاء مجموعة البيانات؟ هل كان هناك جزء مربك، أو لم يكن يعمل في المرة الأولى؟

يرجى مشاركة تعليقاتك على جيثب .