1. Modelin beklentilerini bir veri sözleşmesine dönüştürün
Bir doğrulayıcı seçmeden önce programınızın beklediği nesneyle başlayın. Tabuler bir girdi için sütunları, türleri ve birimleri adlandırın. Bir görüntü için boyutları, kanalları ve yönlendirme işlemini belirtin. Bir metin için kodlamayı, zorunlu alanları ve boş girdi politikasını tanımlayın. Bir veri okunabilir olduğu halde hesaplamaya uygun olmayabilir.
Üç kararı birbirinden ayırın: reddetmek, olduğu gibi kabul etmek veya belgelenmiş bir kurala göre dönüştürmek. Bir dizeyi sayıya çevirmek, eksik bir değeri değiştirmek ve bir girdiyi kırpmak işlenen içeriği değiştirir. Bu işlemler yalnızca bir araç varsayılan bir tür seçtiği için gerçekleşmemelidir.
Bu kılavuzun örneği eğitim amaçlıdır ve çalıştırılmaz. Bir tanımlayıcı ve −100 ile 100 arasında üç sayısal değer içeren nesneleri ele alır. Bu sınırlar bir sözleşmeyi örneklemek için uydurulmuştur; fiziksel bir birimi yoktur ve herhangi bir Kernodeck veri kümesiyle bağlantılı değildir. Bunlar gerçek projenin kurallarıyla değiştirilmelidir.
Tüm sütunları görmek için tabloyu kaydırın.| Düzey | Kural | Tespit edilebilir hata |
|---|---|---|
| Şema | Tam olarak id ve values | Eksik veya beklenmeyen alan. |
| Tür | id dize; values sayı listesi | Sayının metin biçiminde, mantıksal değer veya eksik değer olarak sunulması. |
| Biçim | Nesne başına üç değer | Çok kısa veya çok uzun vektör. |
| Değer | [−100, 100] aralığında sonlu sayılar | NaN, sonsuz veya eğitim amaçlı alanın dışında bir değer. |
| Derlem | Benzersiz tanımlayıcılar | İki nesne aynı tanımlayıcıyı taşıyor. |
2. Dönüşümlerden önce okumayı doğrulayın
Biçimi ve lehçesini sabitleyin. Bir CSV için ayırıcıyı, kodlamayı ve başlık satırının varlığını belgeleyin. Python'un standart CSV okuyucusu normalde dizeler döndürür; sütununuzun bir tam sayı olduğuna karar vermez. 0012 gibi bir tanımlayıcı, bir dönüşüm onu 12'ye çevirirse anlamını yitirebilir. Bu nedenle tanımlayıcıları öngörülen türlerinde koruyun.
İş nesnelerini oluşturmadan önce alan sayısını ve sütun adlarını kontrol edin. Beklenmeyen bir ayırıcı nedeniyle kayan bir satır, bazı değerler dönüştürülebilir kaldığı gerekçesiyle geçmemelidir. İkili dosyalar veya görüntüler için de gerçek okumayı yapın: doğru bir uzantı, çözülebilir bir içeriği garanti etmez.
Çözümlenmiş bir JSON henüz doğrulanmış bir sözleşme değildir. Python modülü varsayılan olarak bazı sonlu olmayan değerleri ve bir nesnede yinelenen adları kabul eder. Biçiminiz bunları yasaklıyorsa bu reddi çözümleme sırasında yapılandırın, ardından şema kurallarınızı uygulayın. Ayrıca tam bir dosyayı belleğe yüklemeden önce uygun bir boyut sınırı tanımlayın.
3. Her kural türü için hatayı yalıtmak
Her geçersiz girdinin yalnızca bir önemli kuralı ihlal ettiği küçük bir küme oluşturun. Böylece denetimin neyi algıladığını bilirsiniz. Tek yanlış örnek hem hatalı bir tanımlayıcıyı hem yanlış bir boyutu hem de sonsuz bir sayıyı bir arada barındırıyorsa, reddedilmesi üç kuralın da çalıştığını kanıtlamaz.
Tablodaki gösterimler hâlihazırda okunmuş eğitsel nesneleri temsil eder. Sonsuz, benimsenmesi gereken bir JSON söz dizimi değil, sonlu olmayan bir sayısal değerdir. Kararlar akıl yürütmeyle beklenir ve çalıştırılmış bir programın çıktıları değildir. a taşıyan ikinci bir nesne, benzersizliği doğrulamak için geçerli a nesnesinden sonra sınanır.
Sözleşmeniz değiştiğinde bu durumları sözleşmenizle birlikte saklayın. Sayısal dizeleri kabul etmeye karar verirseniz açık bir dönüştürme adımı oluşturun ve bu kararın izini saklayın. Korpustaki ilk reddi ortadan kaldırmak için denetimleri sessizce değiştirmeyin.
Tüm sütunları görmek için tabloyu kaydırın.| Tanımlayıcı ve değerler | Beklenen karar | Sınanan kural |
|---|---|---|
| a · [1, 2, 3] | Kabul edildi | Geçerli referans. |
| b · ["4", 5, 6] | Reddedildi: tür | Bu sözleşmede bir dize sayı değildir. |
| c · [7, 8] | Reddedildi: biçim | Üç yerine iki değer. |
| d · [0, sonsuz, 1] | Reddedildi: değer | Sonlu olmayan bir değer hesaplamaya giremez. |
| a · [4, 5, 6], ilk a'dan sonra | Reddedildi: yinelenen | Korpus üzerinde benzersizlik. |
4. Açık bir doğrulayıcı ve kullanılabilir mesajlar saklamak
Aşağıdaki kesit, çözümlemeden sonra bir nesne üzerindeki denetimleri gösterir. Başarısız olan ilk kuralda durur ve ne tam dosyayı ne de olası tüm biçimlerini ele alır. seen kapsayıcısı korpus taramasına aittir: her satırda yeniden oluşturmak yinelenen denetimini işe yaramaz hâle getirir.
Kullanışlı bir mesaj kuralı, mantıksal dosyayı ve nesnenin konumunu içerir. İçeriğinin tamamını oraya kopyalamaktan kaçının. Birden çok hatanın toplanması durumunda, tam sayaçları korurken saklanan ayrıntıları sınırlayın. Birkaç gigabaytlık bir rapor da ilk nedeni bulmaya daha fazla yardımcı olmaz.
Bir NumPy dizisinde, öğe öğe sonluluk denetimi tür ve biçim denetimlerini tamamlayabilir. İş kurallarındaki sınırların yerini almaz: sonlu bir sayı yine de negatif bir uzunluk veya yanlış birimde ifade edilmiş bir değer olabilir.
import math
def valider_objet(item, seen):
if type(item) is not dict or set(item) != {"id", "values"}:
raise ValueError("SCHEMA")
identifiant = item["id"]
if type(identifiant) is not str or not identifiant.strip():
raise ValueError("IDENTIFIANT")
if identifiant in seen:
raise ValueError("DOUBLON")
values = item["values"]
if type(values) is not list or len(values) != 3:
raise ValueError("FORME")
for value in values:
if type(value) not in (int, float):
raise ValueError("TYPE")
if not (-100 <= value <= 100) or not math.isfinite(value):
raise ValueError("VALEUR")
seen.add(identifiant)
return item5. Örnekten tam korpusa geçmek
Kısa bir örnek, okuyucuyu ve sözleşmeyi hızlıca düzeltmeye olanak tanır. Sıradan durumlar ve sınır durumları seçin: boş girdi, en büyük boyut, alışılmadık karakter, ilk ve son bölümleme. Yalnızca ilk satırlardan bir seçim, daha sonraki bir dosyada veya nadir bir kategoride yer alan bir anormalliği gözden kaçırabilir.
Tam doğrulama, ilgili tüm girdileri tarar ve genel kuralları uygular. Büyük hacimler için dosyaları aşamalı olarak işleyin ve kimliklerini kaydedin. Tüm tanımlayıcıların bellekte tutulduğu bir küme küçük örnek için uygundur, ancak fazla maliyetli hâle gelebilir; bu durumda denetimden vazgeçmeden hacme uygun bir benzersizlik stratejisi seçin.
Rapor kapsamını belirtmelidir: ince ayar örneklemi, bir bölümün tamamı veya tanımlanmış derlemin tamamı. Okunan, kabul edilen ve reddedilen sayısını, ayrıca uygulanan kuralları koruyun. Dosyalar sonradan değişirse, eski rapor yeni girişi otomatik olarak doğrulamaz.
6. Reddedilen verilerle ne yapılacağına karar vermek
Hatalar hesaplamanın anlamını geçersiz kıldığında işi durdurun: temel sütun eksik, birimler uyumsuz veya tanımlayıcı eşleşmesi kaybolmuş. Göreviniz tek tek öğelerin dışlanmasına izin veriyorsa, bu politikayı başlatmadan önce tanımlayın, reddedilenleri koruyun ve sonuçları gerçekten kabul edilen kapsam üzerinden hesaplayın.
Bir kenara koymak düzeltme değildir. Eksik değerleri değiştirir veya girişleri normalleştirirseniz, tanımlanabilir yeni bir sürüm üretin ve yeniden doğrulayın. Dönüşümü ve parametrelerini deneyle birlikte saklayın. Aksi halde, aynı adı taşıyan iki deneme farklı veriler kullanabilir.
GPU'dan önce, gerçekten oluşturulan batch'i bir kez daha kontrol edin: boyut sırası, sayısal tür, olası maske ve hedeflerle eşleşme. Dosyanın doğrulanması dönüşümlerden önce gelir; pipeline'ın bu özellikleri sonrasında koruduğunu kanıtlamaz. Temsili bir durum bu son sınırı doğrulamayı sağlar.
7. Anlaşılır bir başlatma izni üretmek
Beklenen çıktı dört soruyu yanıtlayan kısa bir rapordur: hangi giriş, hangi kurallar, hangi kapsam ve hangi karar. Geçerli bir durum kesin bir derlem kimliğine işaret etmelidir. Kısmi bir durum, kontrol edilmesi gerekenleri adlandırmalıdır. Bir ret, içeriğini gereksiz yere yaymadan ilgili nesneleri bulmayı sağlamalıdır.
Doğrulayıcının kendisi için de bir kontrol ekleyin: doğru bir durum geçer, her yanlış durum doğru gerekçeyle reddedilir ve sayaçlar birbirini tutar. Ardından uygulamada küçük bir pasajı doğrulayın. Bu ikili kontrol, veri uygunluğunu modelin kalitesi veya GPU'nun kullanılabilirliğiyle karıştırmayı önler.
Uygun girişler yanlı, hatalı etiketlenmiş veya incelenen soruya uygun olmayabilir. Bu kılavuz yapısal uygunluğu ve açık kuralları kapsar; ne temsil edilebilirliği ne de kullanım haklarını onaylar. Bu kararlar uzun bir işlemden önce dosyayı tamamlar.