একটি নতুন ডেটাসেট সংগ্রহ যোগ করুন

একটি নতুন ডেটাসেট সংগ্রহ তৈরি করতে এই নির্দেশিকা অনুসরণ করুন (হয় TFDS বা আপনার নিজস্ব সংগ্রহস্থলে)।

ওভারভিউ

TFDS-এ একটি নতুন ডেটাসেট সংগ্রহ my_collection যোগ করতে, ব্যবহারকারীদের নিম্নলিখিত ফাইলগুলি সহ একটি 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)

একটি নিয়ম হিসাবে, নতুন ডেটাসেট সংগ্রহগুলি TFDS সংগ্রহস্থলের tensorflow_datasets/dataset_collections/ ফোল্ডারে যোগ করা উচিত।

আপনার ডেটাসেট সংগ্রহ লিখুন

সমস্ত ডেটাসেট সংগ্রহ 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 : ডেটাসেট সংগ্রহে সংস্করণযুক্ত ডেটাসেটের অস্তিত্ব পরীক্ষা করতে হবে নাকি তাদের ডিফল্ট সংস্করণের জন্য (সত্য থেকে ডিফল্ট)।

একটি ডেটাসেট সংগ্রহের জন্য সবচেয়ে সহজ বৈধ পরীক্ষা হবে:

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 এ আপনার মতামত শেয়ার করুন.