Biraz konnets ile oynuyorum. Özellikle, kedi veya köpek (her biri 12500) olarak etiketlenmiş 25000 görüntüden oluşan kaggle cats---dogs veri kümesini kullanıyorum.
Test setimde yaklaşık% 85 sınıflandırma doğruluğu elde etmeyi başardım, ancak% 90 doğruluk elde etme hedefi belirledim.
Benim asıl sorunum aşırı uymak. Her nasılsa her zaman olur (normalde 8-10 döneminden sonra). Ağımın mimarisi VGG-16'dan gevşek bir şekilde ilham alıyor, daha spesifik olarak görüntülerim olarak yeniden boyutlandırılıyor ve çalıştırıyorum:
Convolution 1 128x128x32 (kernel size is 3, strides is 1)
Convolution 2 128x128x32 (kernel size is 3, strides is 1)
Max pool 1 64x64x32 (kernel size is 2, strides is 2)
Convolution 3 64x64x64 (kernel size is 3, strides is 1)
Convolution 4 64x64x64 (kernel size is 3, strides is 1)
Max pool 2 32x32x64 (kernel size is 2, strides is 2)
Convolution 5 16x16x128 (kernel size is 3, strides is 1)
Convolution 6 16x16x128 (kernel size is 3, strides is 1)
Max pool 3 8x8x128 (kernel size is 2, strides is 2)
Convolution 7 8x8x256 (kernel size is 3, strides is 1)
Max pool 4 4x4x256 (kernel size is 2, strides is 2)
Convolution 8 4x4x512 (kernel size is 3, strides is 1)
Fully connected layer 1024 (dropout 0.5)
Fully connected layer 1024 (dropout 0.5)
Sonuncusu hariç tüm katmanlar aktivasyon fonksiyonu olarak relus'a sahiptir.
Farklı kıvrım kombinasyonlarını denediğimi unutmayın (daha basit kıvrımlarla başladım).
Ayrıca, görüntüleri yansıtarak veri kümesini artırdım, böylece toplamda 50000 görüntü var.
Ayrıca, min max normalleştirme kullanarak görüntüleri normalleştiriyorum, burada X görüntüdür
Kod tensorflow ile yazılır ve toplu iş boyutları 128'dir.
Mini eğitim verisi grupları aşırı uyum sağlar ve% 100 doğruluk sağlarken, doğrulama verileri öğrenmeyi% 84-85 civarında durduruyor gibi görünmektedir.
Ayrılma oranını artırmaya / azaltmaya çalıştım.
Kullanılan optimizer 0.0001 öğrenme oranına sahip AdamOptimizer
Şu anda bu sorunla son 3 haftadır oynuyorum ve% 85'i önümde bir engel oluşturmuş gibi görünüyor.
Kayıt için, transfer öğrenimini daha yüksek sonuçlar elde etmek için kullanabileceğimi biliyorum, ancak bu ağı kendi kendine öğrenme deneyimi olarak inşa etmede ilginçim.
Güncelleme:
SAME ağını farklı bir toplu iş boyutuyla çalıştırıyorum, bu durumda çok daha küçük bir toplu iş boyutu kullanıyorum (128 yerine 16) şu ana kadar% 87.5 (% 85 yerine) doğruluk elde ediyorum. Bununla birlikte, ağ yine de aşırı sığdır. Yine de, birimlerin% 50'sinin bırakılmasının nasıl yardımcı olmadığını anlamıyorum ... Açıkçası burada yanlış bir şey yapıyorum. Herhangi bir fikir?
Güncelleme 2:
Sorun, daha küçük bir boyutta olduğu gibi (128 yerine 16) toplu boyutla ilgili olması gerektiği gibi görünüyor. Test setimde şu anda% 92.8 doğruluk elde ediyorum, ağın hala fazla olan daha küçük parti boyutu ile (mini gruplar sona eriyor) ancak% 100 doğrulukla) kayıp (hata) azalmaya devam eder ve genel olarak daha kararlıdır. Eksileri çok daha yavaş çalışma süresi vardır, ama tamamen beklemeye değer.