Tanım
Sürüm oluşturma farklı anlamlara gelebilir:
- TFDS API sürümü (pip sürümü):
tfds. version
- TFDS'den bağımsız, genel veri seti sürümü (örn. Voc2007 , Voc2012). TFDS'de her genel veri kümesi versiyonu bağımsız bir veri kümesi olarak uygulanmalıdır:
- Oluşturucu yapılandırmaları yoluyla: Örneğin
voc/2007
,voc/2012
- 2 bağımsız veri kümesi olarak: Örneğin
wmt13_translate
,wmt14_translate
- Oluşturucu yapılandırmaları yoluyla: Örneğin
- TFDS'deki veri kümesi oluşturma kodu sürümü (
my_dataset:1.0.0
): Örneğin,voc/2007
TFDS uygulamasında bir hata bulunursavoc.py
oluşturma kodu güncellenecektir (voc/2007:1.0.0
- >voc/2007:2.0.0
).
Bu kılavuzun geri kalanı yalnızca son tanıma (TFDS deposundaki veri kümesi kod sürümü) odaklanmaktadır.
Desteklenen sürümler
Genel bir kural olarak:
- Yalnızca son güncel sürüm oluşturulabilir.
- Önceden oluşturulmuş tüm veri kümeleri okunabilir (not: Bunun için TFDS 4+ ile oluşturulmuş veri kümeleri gerekir).
builder = tfds.builder('my_dataset')
builder.info.version # Current version is: '2.0.0'
# download and load the last available version (2.0.0)
ds = tfds.load('my_dataset')
# Explicitly load a previous version (only works if
# `~/tensorflow_datasets/my_dataset/1.0.0/` already exists)
ds = tfds.load('my_dataset:1.0.0')
Anlamsal
TFDS'de tanımlanan her DatasetBuilder
bir sürümle birlikte gelir; örneğin:
class MNIST(tfds.core.GeneratorBasedBuilder):
VERSION = tfds.core.Version('2.0.0')
RELEASE_NOTES = {
'1.0.0': 'Initial release',
'2.0.0': 'Update dead download url',
}
Sürüm , Anlamsal Sürüm Oluşturma 2.0.0'ı takip etmektedir: MAJOR.MINOR.PATCH
. Versiyonun amacı tekrarlanabilirliği garanti edebilmektir: belirli bir veri setini sabit bir versiyona yüklemek aynı verileri verir. Daha spesifik olarak:
-
PATCH
sürümü artırılırsa, istemci tarafından okunan veriler aynıdır, ancak veriler diskte farklı şekilde serileştirilmiş olabilir veya meta veriler değişmiş olabilir. Herhangi bir dilim için dilimleme API'si aynı kayıt kümesini döndürür. -
MINOR
sürüm artırılırsa, istemci tarafından okunan mevcut veriler aynıdır ancak ek veriler vardır (her kayıtta özellikler). Herhangi bir dilim için dilimleme API'si aynı kayıt kümesini döndürür. -
MAJOR
sürümü artırılırsa mevcut veriler değişmiştir ve/veya dilimleme API'sinin belirli bir dilim için aynı kayıt kümesini döndürmesi gerekmez.
TFDS kitaplığında bir kod değişikliği yapıldığında ve bu kod değişikliği, veri kümesinin serileştirilme ve/veya istemci tarafından okunma şeklini etkilediğinde, karşılık gelen oluşturucu sürümü yukarıdaki yönergelere göre artırılır.
Yukarıdaki anlambilimin en iyi çaba olduğunu ve sürüm artırılmadığı sırada veri kümesini etkileyen fark edilmeyen hatalar olabileceğini unutmayın. Bu tür hatalar eninde sonunda düzeltilir, ancak sürüm oluşturmaya çok güveniyorsanız, TFDS'yi yayınlanmış bir sürümden ( HEAD
yerine) kullanmanızı öneririz.
Ayrıca bazı veri kümelerinin TFDS sürümünden bağımsız başka bir sürüm oluşturma şemasına sahip olduğunu unutmayın. Örneğin, Open Images veri kümesinin çeşitli versiyonları vardır ve TFDS'de karşılık gelen oluşturucular open_images_v4
, open_images_v5
, ...'dir.
Belirli bir sürümün yüklenmesi
Bir veri kümesini veya DatasetBuilder
yüklerken kullanılacak sürümü belirtebilirsiniz. Örneğin:
tfds.load('imagenet2012:2.0.1')
tfds.builder('imagenet2012:2.0.1')
tfds.load('imagenet2012:2.0.0') # Error: unsupported version.
# Resolves to 3.0.0 for now, but would resolve to 3.1.1 if when added.
tfds.load('imagenet2012:3.*.*')
Bir yayın için TFDS kullanıyorsanız şunları yapmanızı öneririz:
- yalnızca sürümün
MAJOR
bileşenini düzeltin ; - Sonuçlarınızda veri kümesinin hangi sürümünün kullanıldığının reklamını yapın.
Bunu yapmak gelecekteki kendinizin, okuyucularınızın ve değerlendiricilerinizin sonuçlarınızı yeniden üretmesini kolaylaştıracaktır.
BUILDER_CONFIGS ve sürümleri
Bazı veri kümeleri birkaç BUILDER_CONFIGS
tanımlar. Böyle bir durumda version
ve supported_versions
yapılandırma nesnelerinin kendisinde tanımlanır. Bunun dışında anlam ve kullanım aynıdır. Örneğin:
class OpenImagesV4(tfds.core.GeneratorBasedBuilder):
BUILDER_CONFIGS = [
OpenImagesV4Config(
name='original',
version=tfds.core.Version('0.2.0'),
supported_versions=[
tfds.core.Version('1.0.0', "Major change in data"),
],
description='Images at their original resolution and quality.'),
...
]
tfds.load('open_images_v4/original:1.*.*')
Deneysel versiyon
Aynı anda 2 versiyonun oluşturulmasına izin vermek mümkündür. Bir varsayılan ve bir deneysel sürüm. Örneğin:
class MNIST(tfds.core.GeneratorBasedBuilder):
VERSION = tfds.core.Version("1.0.0") # Default version
SUPPORTED_VERSIONS = [
tfds.core.Version("2.0.0"), # Experimental version
]
# Download and load default version 1.0.0
builder = tfds.builder('mnist')
# Download and load experimental version 2.0.0
builder = tfds.builder('mnist', version='experimental_latest')
Kodda 2 sürümü desteklediğinizden emin olmanız gerekir:
class MNIST(tfds.core.GeneratorBasedBuilder):
...
def _generate_examples(self, path):
if self.info.version >= '2.0.0':
...
else:
...