ปฏิบัติตามคำแนะนำนี้เพื่อสร้างคอลเล็กชันชุดข้อมูลใหม่ (ใน 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