Keras'ın fit fonksiyonunun validation_split parametresi nasıl çalışır?


17

Keras Sıralı model sığdırma işlevinde doğrulama bölme https://keras.io/models/sequential/ adresinde aşağıdaki gibi belgelenmiştir :

validation_split: 0 ile 1 arasında yüzer. Doğrulama verisi olarak kullanılacak egzersiz verilerinin oranı. Model, eğitim verilerinin bu kısmını ayıracak, üzerinde eğitim vermeyecek ve her dönemin sonunda bu verilerdeki kaybı ve model metriklerini değerlendirecektir. Doğrulama verileri, karıştırmadan önce sağlanan x ve y verilerindeki son örneklerden seçilir.

Lütfen son satıra dikkat edin:

Doğrulama verileri, karıştırmadan önce sağlanan x ve y verilerindeki son örneklerden seçilir.

Doğrulama verilerinin her zaman sabit ve ana veri kümesinin altından alındığı anlamına mı geliyor?

Ana veri kümesinden belirli bir veri parçasını rastgele seçmenin herhangi bir yolu var mı?

Yanıtlar:


17

Aslında her bir dönemin ardından doğrulama kümenizi yeniden örneklemek istemezsiniz. Bunu yaparsanız, modeliniz veri kümenizdeki her bir örnek üzerinde eğitilir ve bu da aşırı sığmaya neden olur. Verilerinizi eğitim sürecinden önce her zaman bölmek istiyorsunuz ve algoritma yalnızca eğitim için verilerin alt kümesi kullanılarak eğitilmelidir.

Tasarlandığı işlev, verilerin her çağ için her zaman verinin aynı bölümünde eğitim verecek şekilde ayrılmasını sağlar. Bu seçenek belirlenirse, tüm karıştırma dönemler arasındaki eğitim örneği içinde yapılır.

Ancak, bazı veri kümeleri için son birkaç örneği almak, özellikle de veri kümesi sınıfa göre yeniden gruplandıysa yararlı değildir. Daha sonra sınıflarınızın dağılımı çarpılacaktır. Bu nedenle, eğitim ve doğrulama setinde dengeli sınıf dağılımları elde etmek için verilerin bir alt kümesini çıkarmak için bir tür rastgele yola ihtiyacınız olacaktır. Bunun için her zaman aşağıdaki gibi sklearn işlevini kullanmak isterim

from sklearn.model_selection import train_test_split

# Split the data
x_train, x_valid, y_train, y_valid = train_test_split(data, labels, test_size=0.33, shuffle= True)

İstediğinizi yapan güzel ve kullanımı kolay bir işlevdir. Değişkenler datave labelsstandart nümerik matrislerdir, birinci boyut örneklerdir.


1
Her çağdan sonra farklı test seti almak istememiştim. Birçok veri seti sınıfa göre (belirtildiği gibi) düzenlenmiş olabileceğinden veri kümesinin sonundan veri almasını soruyordum. Ben biliyorum train_test_splitve şimdi rasgele veri kümesinden test / doğrulama verileri alacak çünkü bu daha iyi bir yöntem olduğunu onaylayın.
rnso

@rnso, ne yazık ki Keras bu seçeneği sunmuyor. Sanırım gerçekten sunmak istedikleri şey kapsamında değil. Uygulamayı adında rastgele 2 farklı yöntem girişi olan biraz kafa karıştırıcı yapar.
JahKnows

Doğrulama ve test verilerinin tanımını bu train_test_spli komutunu kullanarak karıştırmadınız mı?
bagustris

Eğer kullanırsanız shuffleparametreyi, ayrıca kullanırsınız shuffleiçinde .fitbir keras model için?
Shamoon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.