Veriyi eğitim ve doğrulama kümelerine ayırma
Yalnızca eğitim verisini kullanıp bir doğrulama veri kümesi kullanmamanın, aşırı uyum (overfitting) denen bir soruna yol açtığını öğrendin. Aşırı uyum olduğunda model, eğitim girdileri için çok iyi tahmin yapar, ancak görülmemiş veriye çok kötü geneller. Bu da modelin pek kullanışlı olmayacağı anlamına gelir, çünkü genelleyemez. Bunu önlemek için bir doğrulama veri kümesi kullanabilirsin.
Bu egzersizde, elindeki veri kümesinden (yani 1000 İngilizce cümle içeren en_text ve 1000 Fransızca cümle içeren fr_text) bir eğitim ve bir doğrulama kümesi oluşturacaksın. Veri kümesinin %80'ini eğitim, %20'sini doğrulama verisi olarak kullanacaksın.
Bu egzersiz
Keras ile Machine Translation
kursunun bir parçasıdırEgzersiz talimatları
- 0'dan başlayan ve boyutu
en_textkadar olan bir indeks dizisininp.arange()ile tanımla. valid_inds'i, indeks dizisinin sonvalid_sizeindeksleri olacak şekilde tanımla.en_textvefr_textlistelerinde,train_indsindekslerinde bulunan cümleleri içerentr_envetf_fr'yi tanımla.en_textvefr_textlistelerinde,valid_indsindekslerinde bulunan cümleleri içerenv_envev_fr'yi tanımla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
train_size, valid_size = 800, 200
# Define a sequence of indices from 0 to len(en_text)
inds = ____.____(len(_____))
np.random.shuffle(inds)
train_inds = inds[:train_size]
# Define valid_inds: last valid_size indices
valid_inds = inds[____]
# Define tr_en (train EN sentences) and tr_fr (train FR sentences)
tr_en = [en_text[____] for ti in ____]
tr_fr = [____ for ti in ____]
# Define v_en (valid EN sentences) and v_fr (valid FR sentences)
v_en = [____ for vi in valid_inds]
v_fr = [____ for vi in ____]
print('Training (EN):\n', tr_en[:3], '\nTraining (FR):\n', tr_fr[:3])
print('\nValid (EN):\n', v_en[:3], '\nValid (FR):\n', v_fr[:3])