AlexNet Network Mimarisinin Değişmesi


#1

Merhaba.
AlexNet mimarisini CNN ile yaptıktan sonra (2 farklı learning rate ve 3 farklı aktivasyon fonksiyonu kullanıp) , fully connected layerdaki düğümlerin sayısını 3 kez % 10 oranında değiştirmek tam olarak ne demek ve bunu yaptığımızda network mimarisi nasıl değişir ?


#2

Merhabalar,
Sorunuzdan yaptigim cikarimlara göre cevap vereyim, dogrudan sorunun ne oldugunu anlamadigim icin farkli seyler cevaplamis olabilirim.
Alexnet mimarisi halihazirda Imagenet üzerinde bir milyondan fazla fotograf ile egitilmis 1000 adet objeyi ayirtedebilen bir ag yapisi.
Genel anlamda bu önceden egitilmis modeli kullanarak, kendi kategorilerimizi siniflandirmak istedigimiz zaman bu ag yapisinin sonun da bulunan “fully connected layer” lari kullanmayip kendi verilerimiz ve kendi katmanlarimiz ile yeniden egitiyoruz. Buna da “transfer learning” deniyor.
Bu metodun ise yaramasinin sebebi ise sinir aglarinin ilk katmanlarinin daha soyut bilgileri iceriyor olmasi (renkler, koseler, vs.) daha sonlara geldigimizde ise artik siniflandirilan gruplara yaklasmis oluyoruz. Biz de bu katmanalari kendi katmanlarimiz ile degistirdigimiz icin. Siniflandirma problemi bizim istedigimiz objeleri ayirtediyor. Mimarisinde yapilan degisiklik de sadece bu son kisimda oluyor.
Belki bu 3 kez %10 oraninda degistirmek kismini nerede gördügünüzü de paylasirsaniz daha net cevaplar verilebilir. Orjinal alexnet makalesinde 3 adet “fully connected layer var” ve son katman 1000 objeyi siniflandiracagi icin 1000 yollu bir softmax.


#3

Cevabınız için teşekkür ederim.
Aslında soru MNIST datasını AlexNet mimarisi ile eğitmek ve bunun fit olamamasını görüp, iyileştirmeler yapmak diye anladım.
CIFAR10 datasını AlexNet ile yapmak istediğimizde şu şekilde olabiliyor. (Nvidia 720m için uzun süren bir işlem gerçi ama çalışıyor). Bunun benzerini MNIST datası için yaptığımda ise hata alıyorum. CNN’nin mantığını tam olarak kavrayamadığım için ve python’u yeni kullandığımdan olsa gerek çözemedim. Sanırım resmin boyutlarını ve input_shape’i mimariye göre değiştirmek gerekli ancak doğru rakamlar ne olmalı bilmiyorum.
Bunun için Deep Learning Türkiye hesabına da baktım. Son olarak benim yazdığım kod ise şu şekilde.

Sorunun orijinali şu :

Not : Bu bir ödev sorusu aslında ama dün 23:55 itibari ile süresi bitti. Yine de öğrenmek amaçlı çözümünü görmek isterim.


#4

Yogun bir ödev sorusu olmus, benim dusuncem bu ödevde “learning rate” , “activation function” ve “fully connected layer” da node sayilari secimlerininin AlexNet mimarisi üzerindeki etkisini görmenizi saglamak. Yani fit olamamasini görmek seklinde yorumlamak dogru olmayacaktir. Bu isleme “hyperparameter tuning” deniyor, siz farkli parametreleri degistirerek hangisinin en iyi sonucu verdigini bulabilirsiniz.
CNN’lere girdi olarak verilen fotograflarin piksellerini alarak bir input vektörü olusturuyoruz ve bu boyut daha sonradan degistirilemiyor. Yani elimizde egitilmis bir Alexnet modeli varsa bunun girdi beklentisi sizin de kodun basinda yazdiginiz gibi 227x227x3 (toplam 154587 girdi her foto icin) olacak, CNN’e bu 154587 girdiyi baglamazsaniz egitilmis bir alexnet’i kullanamazsiniz. Simdi MNIST datasetindeki verilerinize baktigimizda 28x28x1 oldugu icin direkt kullanmaniz mümkün degil sonucuna varabiliriz. Normalde tavsiyem MNIST icin bir yapi kullanmak olabilirdi (LeNet) ama ödev de amac bu degil. Gene de referans olmasi acisindan farkli makina ögrenmesi ve derin ögrenme modelleri ile ulasilan hata yüzdeleri burada siralanmis halini paylasiyorum.
http://yann.lecun.com/exdb/mnist/
Genel soru ile devam edeyim, sizden beklenti alexnet mimarisinde oldugu gibi katman yapisini alip kullanmaniz, yani daha önceden egitilmis olan bir modeli degil.