Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Veri kümeleri sürüm oluşturma

Anlamsal

DatasetBuilder tanımlanan her DatasetBuilder bir sürümle birlikte gelir, örneğin:

class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version("1.0.0")

Sürüm, Anlamsal Sürüm Oluşturma 2.0.0 : MAJOR.MINOR.PATCH . Sürümün amacı, tekrarlanabilirliği garanti edebilmektir: belirli bir veri kümesini sabit bir sürümde 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ştirilebilir 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, müşteri tarafından okunan mevcut veriler aynıdır, ancak ek veriler (her kayıttaki özellikler) vardır. 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ştirilir ve / veya dilimleme API'si belirli bir dilim için mutlaka aynı kayıt kümesini döndürmez.

TFDS kitaplığında bir kod değişikliği yapıldığında ve bu kod değişikliği, bir veri kümesinin seri hale getirilme ve / veya istemci tarafından okunma şeklini etkilediğinde, karşılık gelen kurucu 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ığında bir veri kümesini etkileyen fark edilmemiş hatalar olabileceğini unutmayın. Böyle hatalar sonunda sabittir, ancak ağır sürüm itimat, biz (aksine bir yayımlanan sürümden TFDS kullanmak tavsiye HEAD ).

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, Açık Görüntüler veri kümesinin birkaç sürümü vardır ve TFDS'de karşılık gelen oluşturucular open_images_v4 , open_images_v5 , ...

Desteklenen sürümler

Bir DatasetBuilder , kanonik sürümden hem daha yüksek hem de daha düşük olabilen birkaç sürümü destekleyebilir. Örneğin:

class Imagenet2012(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version('2.0.1', 'Encoding fix. No changes from user POV')
  SUPPORTED_VERSIONS = [
      tfds.core.Version('3.0.0', 'S3: tensorflow.org/datasets/splits'),
      tfds.core.Version('1.0.0'),
      tfds.core.Version('0.0.9', tfds_version_to_prepare="v1.0.0"),
  ]

Daha eski bir sürümü desteklemeye devam etme seçimi, esas olarak veri kümesinin ve sürümün popülerliğine bağlı olarak, duruma göre yapılır. Sonunda, ideal olarak bir olmak üzere, veri kümesi başına yalnızca sınırlı sayıda sürümü desteklemeyi hedefliyoruz. Yukarıdaki örnekte, okuyucu açısından 2.0.1 aynı olan sürüm 2.0.0 artık desteklenmediğini görebiliriz.

Kanonik sürüm numarasından daha yüksek sayıya sahip desteklenen sürümler deneysel olarak kabul edilir ve çalışmayabilir. Ancak sonunda kanonik hale getirilecekler.

Bir sürüm tfds_version_to_prepare belirtebilir. Bu, bu veri kümesi sürümünün yalnızca kodun daha eski bir sürümü tarafından hazırlanmışsa ancak hazırlanamıyorsa TFDS kodunun mevcut sürümüyle kullanılabileceği anlamına gelir. tfds_version_to_prepare değeri, bu sürümde veri kümesini indirmek ve hazırlamak için kullanılabilecek en son bilinen TFDS sürümünü belirtir.

Belirli bir sürümü yükleme

Bir veri kümesini veya DatasetBuilder , 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, size şunları tavsiye ederiz:

  • 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ı duyurun.

Bunu yapmak, gelecekteki benliğinizin, okuyucularınızın ve eleştirmenlerinizin sonuçlarınızı yeniden üretmesini kolaylaştırmalıdır.

Deneyler

TFDS'de birçok veri kümesi oluşturucuyu etkileyen değişiklikleri kademeli olarak kullanıma sunmak için deneyler kavramını getirdik. İlk kullanıma sunulduğunda, bir deneme varsayılan olarak devre dışı bırakılır, ancak belirli veri kümesi sürümleri onu etkinleştirmeye karar verebilir. Bu genellikle ilk başta "gelecek" sürümlerde (henüz standart hale getirilmemiş) yapılacaktır. Örneğin:

class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version("1.0.0")
  SUPPORTED_VERSIONS = [
      tfds.core.Version("2.0.0", "EXP1: Opt-in for experiment 1",
                        experiments={tfds.core.Experiment.EXP1: True}),
  ]

Bir deneyin beklendiği gibi çalıştığı doğrulandıktan sonra, tüm veya çoğu veri kümesine genişletilecek ve bu noktada varsayılan olarak etkinleştirilebilecek ve yukarıdaki tanım şu şekilde görünecektir:

class MNIST(tfds.core.GeneratorBasedBuilder):
  VERSION = tfds.core.Version("1.0.0",
                              experiments={tfds.core.Experiment.EXP1: False})
  SUPPORTED_VERSIONS = [
      tfds.core.Version("2.0.0", "EXP1: Opt-in for experiment 1"),
  ]

Bir deneme tüm veri kümesi sürümlerinde kullanıldığında ( {experiment: False} belirten veri kümesi sürümü kalmamıştır), deney silinebilir.

Deneyler ve açıklamaları core/utils/version.py tanımlanmıştır.

BUILDER_CONFIGS ve sürümler

Bazı veri kümeleri birkaç BUILDER_CONFIGS tanımlar. Bu 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.*.*')