Yeni bir veri kümesi koleksiyonu oluşturmak için bu kılavuzu izleyin (TFDS'de veya kendi veri havuzunuzda).
Genel Bakış
TFDS'ye yeni bir veri kümesi koleksiyonu my_collection
eklemek için kullanıcıların aşağıdaki dosyaları içeren bir my_collection
klasörü oluşturması gerekir:
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)
Kural olarak, TFDS deposundaki tensorflow_datasets/dataset_collections/
klasörüne yeni veri kümesi koleksiyonları eklenmelidir.
Veri kümesi koleksiyonunuzu yazın
Tüm veri kümesi koleksiyonları, tfds.core.dataset_collection_builder.DatasetCollection
öğesinin uygulanan alt sınıflarıdır.
Burada my_collection.py
dosyasında tanımlanan veri kümesi toplama oluşturucusunun minimal bir örneği verilmiştir:
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"
})
})
Sonraki bölümlerde üzerine yazmanın 2 soyut yöntemi açıklanmaktadır.
info
: veri kümesi koleksiyonu meta verileri
info
yöntemi, koleksiyonun meta verilerini içeren dataset_collection_builder.DatasetCollectionInfo
öğesini döndürür.
Veri kümesi toplama bilgileri dört alan içerir:
- name: veri kümesi koleksiyonunun adı.
- açıklama: veri kümesi koleksiyonunun işaretleme biçimli açıklaması. Bir veri kümesi koleksiyonunun açıklamasını tanımlamanın iki yolu vardır: (1) Doğrudan koleksiyonun
my_collection.py
dosyasında (çok satırlı) bir dize olarak - TFDS veri kümeleri için zaten yapıldığına benzer şekilde; (2) Veri kümesi toplama klasörüne yerleştirilmesi gereken birdescription.md
dosyasında. - sürüm_notları: veri kümesi koleksiyonunun sürümünden ilgili sürüm notlarına eşleme.
- Alıntı: Veri kümesi koleksiyonu için isteğe bağlı bir BibTeX alıntı(lar)ının listesi. Bir veri kümesi koleksiyonunun alıntısını tanımlamanın iki yolu vardır: (1) Doğrudan koleksiyonun
my_collection.py
dosyasında (çok satırlı) bir dize olarak - TFDS veri kümeleri için zaten yapıldığına benzer şekilde; (2) Veri kümesi toplama klasörüne yerleştirilmesi gereken bircitations.bib
dosyasında.
datasets
: koleksiyondaki veri kümelerini tanımlayın
datasets
yöntemi, koleksiyondaki TFDS veri kümelerini döndürür.
Veri kümesi koleksiyonunun gelişimini açıklayan sürümler sözlüğü olarak tanımlanır.
Her sürüm için, dahil edilen TFDS veri kümeleri, veri kümesi adlarından naming.DatasetReference
kadar bir sözlük olarak depolanır. Örneğin:
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
yöntemi, yukarıdakiyle aynı ifadeyi ifade etmenin daha kompakt bir yolunu sağlar:
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",
}),
...
}
Veri kümesi koleksiyonunuzu birim testiyle test edin
DatasetCollectionTestBase, veri kümesi koleksiyonları için temel bir test sınıfıdır. Veri kümesi koleksiyonunun doğru şekilde kaydedildiğini ve veri kümelerinin TFDS'de mevcut olduğunu garanti etmek için bir dizi basit kontrol sağlar.
Ayarlanacak tek sınıf özelliği, test edilecek veri kümesi koleksiyonunun sınıf nesnesini belirten DATASET_COLLECTION_CLASS
.
Ayrıca kullanıcılar aşağıdaki sınıf niteliklerini de ayarlayabilir:
-
VERSION
: Testi çalıştırmak için kullanılan veri kümesi koleksiyonunun sürümü (varsayılan olarak en son sürümdür). -
DATASETS_TO_TEST
: TFDS'de varlığı test edilecek veri kümelerini içeren liste (koleksiyondaki tüm veri kümeleri için varsayılandır). -
CHECK_DATASETS_VERSION
: Veri kümesi koleksiyonundaki sürümlendirilmiş veri kümelerinin varlığının mı yoksa varsayılan sürümlerinin mi (varsayılanı true'dur) kontrol edilip edilmeyeceği.
Bir veri kümesi koleksiyonu için en basit geçerli test şu şekilde olacaktır:
from tensorflow_datasets.testing.dataset_collection_builder_testing import DatasetCollectionTestBase
from . import my_collection
class TestMyCollection(DatasetCollectionTestBase):
DATASET_COLLECTION_CLASS = my_collection.MyCollection
Veri kümesi koleksiyonunu test etmek için aşağıdaki komutu çalıştırın.
python my_dataset_test.py
Geri bildirim
Veri kümesi oluşturma iş akışını sürekli olarak iyileştirmeye çalışıyoruz ancak bunu yalnızca sorunların farkında olduğumuzda yapabiliriz. Veri kümesi koleksiyonunu oluştururken hangi sorunlarla veya hatalarla karşılaştınız? Kafa karıştırıcı olan veya ilk seferde çalışmayan bir kısım var mıydı?
Lütfen geri bildiriminizi GitHub'da paylaşın.