Postępuj zgodnie z tym przewodnikiem, aby utworzyć nową kolekcję zbiorów danych (w TFDS lub we własnym repozytorium).
Przegląd
Aby dodać nową kolekcję zbiorów danych my_collection
do TFDS, użytkownicy muszą wygenerować folder my_collection
zawierający następujące pliki:
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)
Tradycyjnie nowe kolekcje zbiorów danych należy dodawać do folderu tensorflow_datasets/dataset_collections/
w repozytorium TFDS.
Zapisz swoją kolekcję zbiorów danych
Wszystkie kolekcje zestawów danych są zaimplementowanymi podklasami tfds.core.dataset_collection_builder.DatasetCollection
.
Oto minimalny przykład kreatora kolekcji zbiorów danych zdefiniowany w pliku 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"
})
})
W następnych sekcjach opisano 2 abstrakcyjne metody nadpisywania.
info
: metadane zbioru danych
Metoda info
zwraca wartość dataset_collection_builder.DatasetCollectionInfo
zawierającą metadane kolekcji.
Informacje o zbiorze zbioru danych zawierają cztery pola:
- nazwa: nazwa kolekcji zestawu danych.
- opis: opis zbioru danych w formacie przeceny. Istnieją dwa sposoby zdefiniowania opisu kolekcji zbioru danych: (1) Jako ciąg (wieloliniowy) bezpośrednio w pliku
my_collection.py
kolekcji - podobnie jak ma to już miejsce w przypadku zbiorów danych TFDS; (2) W plikudescription.md
, który należy umieścić w folderze zbioru danych. - release_notes: mapowanie wersji zbioru danych na odpowiednie uwagi do wydania.
- cytaty: Opcjonalne (lista) cytatów BibTeX-owych do zbioru danych. Istnieją dwa sposoby definiowania cytowania kolekcji zbioru danych: (1) Jako ciąg (wieloliniowy) bezpośrednio w pliku
my_collection.py
kolekcji - podobnie jak ma to już miejsce w przypadku zbiorów danych TFDS; (2) W plikucitations.bib
, który należy umieścić w folderze zbioru danych.
datasets
: zdefiniuj zestawy danych w kolekcji
Metoda datasets
zwraca zestawy danych TFDS w kolekcji.
Definiuje się go jako słownik wersji opisujących ewolucję zbioru danych.
Dla każdej wersji dołączone zestawy danych TFDS są przechowywane jako słownik od nazw zestawów danych do naming.DatasetReference
. Na przykład:
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"),
},
...
}
Metoda naming.references_for
zapewnia bardziej zwarty sposób wyrażenia tego samego, co powyżej:
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",
}),
...
}
Przetestuj jednostkowo swoją kolekcję zbiorów danych
DatasetCollectionTestBase to podstawowa klasa testowa dla kolekcji zestawów danych. Zapewnia szereg prostych kontroli gwarantujących, że zbiór danych jest poprawnie zarejestrowany i że jego zbiory danych istnieją w TFDS.
Jedynym atrybutem klasy, który należy ustawić, jest DATASET_COLLECTION_CLASS
, który określa obiekt klasy zbioru danych do przetestowania.
Dodatkowo użytkownicy mogą ustawić następujące atrybuty klasy:
-
VERSION
: Wersja zbioru danych użytego do uruchomienia testu (domyślnie jest to najnowsza wersja). -
DATASETS_TO_TEST
: Lista zawierająca zestawy danych do sprawdzenia w TFDS (domyślnie wszystkie zestawy danych w kolekcji). -
CHECK_DATASETS_VERSION
: Określa, czy sprawdzać istnienie wersjonowanych zestawów danych w kolekcji zestawów danych, czy też ich wersje domyślne (wartość domyślna to true).
Najprostszym prawidłowym testem zbioru danych byłoby:
from tensorflow_datasets.testing.dataset_collection_builder_testing import DatasetCollectionTestBase
from . import my_collection
class TestMyCollection(DatasetCollectionTestBase):
DATASET_COLLECTION_CLASS = my_collection.MyCollection
Uruchom następujące polecenie, aby przetestować kolekcję zestawu danych.
python my_dataset_test.py
Informacja zwrotna
Nieustannie staramy się udoskonalać proces tworzenia zestawu danych, ale możemy to zrobić tylko wtedy, gdy jesteśmy świadomi problemów. Jakie problemy lub błędy napotkałeś podczas tworzenia zbioru danych? Czy była jakaś część, która była myląca lub nie działała za pierwszym razem?
Podziel się swoją opinią na GitHubie .