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

Veri setleri 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 Semantik Sürüm MAJOR.MINOR.PATCH takip eder: MAJOR.MINOR.PATCH . Versiyonun amacı tekrarlanabilirliği garanti edebilmektir: belirli bir veri setinin sabit bir versiyona yüklenmesi aynı verileri verir. Daha spesifik olarak:

  • PATCH sürümü artırılırsa, veriler diskte farklı şekilde serileştirilebilir veya meta veriler değişmiş olsa da, istemci tarafından okunan veriler aynıdır. Belirli 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ıttaki ö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ştirilir ve / veya dilimleme API'sı belirli bir dilim için 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 istemci tarafından serileştirilme ve / veya okuma biçimini etkilediğinde, karşılık gelen oluşturucu sürümü yukarıdaki yönergelere göre artırılır.

Yukarıdaki semantiğin en iyi çaba olduğunu ve sürüm artırılmazken bir veri kümesini etkileyen fark edilmeyen hatalar olabileceğini unutmayın. Bu tür hatalar sonunda giderilir, ancak sürümlemeye büyük ölçüde güvenirseniz, yayınlanmış bir sürümden ( HEAD yerine) TFDS kullanmanızı öneririz.

Ayrıca, bazı veri kümelerinin TFDS sürümünden bağımsız olarak başka bir sürüm ş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

DatasetBuilder , standart sürümden daha yüksek veya daha düşük olabilen çeşitli sürümleri 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çeneği, temel olarak veri kümesinin ve sürümün popülaritesine bağlı olarak duruma göre yapılır. Sonunda, veri seti başına sadece sınırlı sayıda sürümü, ideal olarak bir tane desteklemeyi hedefliyoruz. Yukarıdaki örnekte, 2.0.0 sürümünün bir okuyucu bakış açısından 2.0.1 aynı şekilde artık desteklenmediğini görebiliriz.

Standart sürüm numarasından daha yüksek numaralı desteklenen sürümler deneysel olarak kabul edilir ve bozulabilir. 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 TFDS kodunun geçerli sürümüyle kullanılabileceği, ancak kodun daha eski bir sürümü tarafından hazırlanmış ancak hazırlanamayacağı anlamına gelir. tfds_version_to_prepare değeri, bu sürümdeki veri kümesini indirmek ve hazırlamak için kullanılabilen son bilinen TFDS sürümünü belirtir.

Belirli bir sürümü yükleme

Bir veri kümesi veya DatasetBuilder , kullanılacak sürümü belirleyebilirsiniz. Ö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ı tanıtın.

Bunu yapmak, gelecekteki kendinizin, okuyucularınızın ve hakemlerinizin sonuçlarınızı yeniden üretmesini kolaylaştırmalıdır.

Deneyler

Birçok veri kümesi oluşturucusunu etkileyen TFDS'deki değişiklikleri aşamalı olarak uygulamak için deneyler kavramını tanıttık. İlk tanıtıldığında, bir deneme varsayılan olarak devre dışıdır, ancak belirli veri kümesi sürümleri bunu etkinleştirmeye karar verebilir. Bu genellikle ilk başta "gelecekteki" sürümlerde (henüz standartlaştırılmamış) 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 denemenin 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 aşağıdaki gibi 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"),
  ]
 

Tüm veri kümesi sürümlerinde bir deneme kullanıldığında ( {experiment: False} belirten veri kümesi sürümü kalmaz), deneme silinebilir.

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

BUILDER_CONFIGS ve sürümleri

Bazı veri kümeleri birkaç BUILDER_CONFIGS tanımlar. Böyle bir durumda, yapılandırma nesneleri üzerinde version ve supported_versions tanımlanır. Bunun dışında anlambilim 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.*.*')