Ikuti panduan ini untuk membuat kumpulan dataset baru (baik di TFDS atau di repositori Anda sendiri).
Ringkasan
Untuk menambahkan kumpulan data baru my_collection
ke TFDS, pengguna perlu membuat folder my_collection
yang berisi file berikut:
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)
Sesuai konvensi, koleksi kumpulan data baru harus ditambahkan ke folder tensorflow_datasets/dataset_collections/
di repositori TFDS.
Tulis koleksi kumpulan data Anda
Semua koleksi kumpulan data diimplementasikan subkelas tfds.core.dataset_collection_builder.DatasetCollection
.
Berikut adalah contoh minimal pembuat kumpulan data, yang ditentukan dalam file 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"
})
})
Bagian selanjutnya menjelaskan 2 metode abstrak untuk ditimpa.
info
: metadata kumpulan data
Metode info
mengembalikan dataset_collection_builder.DatasetCollectionInfo
yang berisi metadata koleksi.
Info pengumpulan kumpulan data berisi empat bidang:
- name : nama kumpulan dataset.
- deskripsi: deskripsi koleksi kumpulan data dengan format penurunan harga. Ada dua cara untuk mendefinisikan deskripsi kumpulan data: (1) Sebagai string (multi-baris) langsung di file
my_collection.py
koleksi - sama seperti yang telah dilakukan untuk kumpulan data TFDS; (2) Dalam filedescription.md
, yang harus ditempatkan di folder kumpulan dataset. - release_notes: pemetaan dari versi kumpulan data ke catatan rilis yang sesuai.
- kutipan: (daftar) kutipan BibTeX opsional untuk pengumpulan kumpulan data. Ada dua cara untuk menentukan kutipan kumpulan data: (1) Sebagai string (multi-baris) langsung di file
my_collection.py
koleksi - sama seperti yang telah dilakukan untuk kumpulan data TFDS; (2) Dalam filecitations.bib
yang harus ditempatkan di folder kumpulan dataset.
datasets
: menentukan kumpulan data dalam koleksi
Metode datasets
mengembalikan kumpulan data TFDS dalam koleksi.
Ini didefinisikan sebagai kamus versi, yang menggambarkan evolusi pengumpulan kumpulan data.
Untuk setiap versi, kumpulan data TFDS yang disertakan disimpan sebagai kamus mulai dari nama kumpulan data hingga naming.DatasetReference
. Misalnya:
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"),
},
...
}
Metode naming.references_for
menyediakan cara yang lebih ringkas untuk mengekspresikan hal yang sama seperti di atas:
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",
}),
...
}
Uji unit koleksi kumpulan data Anda
DatasetCollectionTestBase adalah kelas pengujian dasar untuk koleksi set data. Ini memberikan sejumlah pemeriksaan sederhana untuk menjamin bahwa kumpulan data didaftarkan dengan benar, dan datasetnya ada di TFDS.
Satu-satunya atribut kelas yang harus disetel adalah DATASET_COLLECTION_CLASS
, yang menentukan objek kelas kumpulan data yang akan diuji.
Selain itu, pengguna dapat mengatur atribut kelas berikut:
-
VERSION
: Versi kumpulan data yang digunakan untuk menjalankan pengujian (default ke versi terbaru). -
DATASETS_TO_TEST
: Daftar berisi kumpulan data yang akan diuji keberadaannya di TFDS (default untuk semua kumpulan data dalam koleksi). -
CHECK_DATASETS_VERSION
: Apakah akan memeriksa keberadaan himpunan data berversi dalam kumpulan himpunan data, atau versi defaultnya (defaultnya adalah true).
Tes valid paling sederhana untuk pengumpulan kumpulan data adalah:
from tensorflow_datasets.testing.dataset_collection_builder_testing import DatasetCollectionTestBase
from . import my_collection
class TestMyCollection(DatasetCollectionTestBase):
DATASET_COLLECTION_CLASS = my_collection.MyCollection
Jalankan perintah berikut untuk menguji pengumpulan dataset.
python my_dataset_test.py
Masukan
Kami terus berupaya meningkatkan alur kerja pembuatan kumpulan data, namun hal ini hanya dapat dilakukan jika kami mengetahui masalahnya. Masalah atau kesalahan apa yang Anda temui saat membuat kumpulan dataset? Apakah ada bagian yang membingungkan, atau tidak berfungsi pada kali pertama?
Silakan bagikan tanggapan Anda di GitHub .