Bir Kaggle yarışması için kullandığım buna benzer (ref 1) gibi Keras'ta kıvrımlı + LSTM modelim var. Mimari aşağıda gösterilmiştir. Etiketli 11000 örnek setimde eğitim aldım (iki sınıf, başlangıç yaygınlığı ~ 9: 1, bu yüzden% 20 doğrulama bölünmesi ile 50 dönem için 1'leri 1/1 oranına kadar örnekledim). Bir süre gürültü ve bırakma katmanları ile kontrol altına aldığını düşündüm.
Model harika bir şekilde eğitim almış gibi görünüyordu, sonunda eğitim setinin tamamı üzerinde% 91 puan aldı, ancak test veri setinde test edildiğinde mutlak çöp.
Uyarı: Doğrulama doğruluğu, eğitim doğruluğundan daha yüksektir. Bu "tipik" aşırı takmanın tam tersidir.
Benim sezgim, küçük-ish doğrulama bölünmesi göz önüne alındığında, model hala giriş kümesine çok güçlü uymayı ve genellemeyi kaybetmeyi başarıyor. Diğer ipucu val_acc acc daha büyük, balık gibi görünüyor. Buradaki en olası senaryo bu mu?
Bu aşırı uyuyorsa, doğrulama bölünmesini artırmak bunu hafifletir mi, yoksa aynı sorunla karşılaşır mıyım, çünkü ortalama olarak, her örnek hala toplam çağların yarısını görecek mi?
Model:
Layer (type) Output Shape Param # Connected to
====================================================================================================
convolution1d_19 (Convolution1D) (None, None, 64) 8256 convolution1d_input_16[0][0]
____________________________________________________________________________________________________
maxpooling1d_18 (MaxPooling1D) (None, None, 64) 0 convolution1d_19[0][0]
____________________________________________________________________________________________________
batchnormalization_8 (BatchNormal(None, None, 64) 128 maxpooling1d_18[0][0]
____________________________________________________________________________________________________
gaussiannoise_5 (GaussianNoise) (None, None, 64) 0 batchnormalization_8[0][0]
____________________________________________________________________________________________________
lstm_16 (LSTM) (None, 64) 33024 gaussiannoise_5[0][0]
____________________________________________________________________________________________________
dropout_9 (Dropout) (None, 64) 0 lstm_16[0][0]
____________________________________________________________________________________________________
batchnormalization_9 (BatchNormal(None, 64) 128 dropout_9[0][0]
____________________________________________________________________________________________________
dense_23 (Dense) (None, 64) 4160 batchnormalization_9[0][0]
____________________________________________________________________________________________________
dropout_10 (Dropout) (None, 64) 0 dense_23[0][0]
____________________________________________________________________________________________________
dense_24 (Dense) (None, 2) 130 dropout_10[0][0]
====================================================================================================
Total params: 45826
İşte modele uyma çağrısı (girdiyi örneklediğim için sınıf ağırlığı genellikle 1: 1 civarındadır):
class_weight= {0:1./(1-ones_rate), 1:1./ones_rate} # automatically balance based on class occurence
m2.fit(X_train, y_train, nb_epoch=50, batch_size=64, shuffle=True, class_weight=class_weight, validation_split=0.2 )
SE puanım daha yüksek olana kadar en fazla 2 bağlantı gönderebileceğim bazı aptalca kuralı vardır, bu yüzden ilginizi çeken örnek şu şekildedir: Ref 1: makine öğrenimiMoto DOT com SLASH dizisi-sınıflandırma-lstm-tekrarlayan-sinir-ağları- piton-keras