Pazar, Mayıs 10, 2020

Keras 'ın akibeti ile Tensorflow 2.x durumu




Bizi takip edenler bilir. Derin öğrenme kütüphaneleri hakkında yazılar yazmıştık.


Bizde bu kütüphanleri içinde "Keras" ı tercih etmiştik. Kullanımı kolay, ağ yapısını tasarlamak kolay, lego vari katman eklemeleri ile çalışıyordu. Genel eğitim fonksiyonları ile hafızdan yada dizinden , yada Python Generator kaynaklı şekilde eğitim tasarlamak mümkündü.  Üst düzey bir yapısı vardı alta Theano, Tensorflow, CNTK, mxnet gibi diğer kütüphaleri kullanabiliyordu.

Yukardaki yazılarda bahsettiğim gibi büyük şirketlerin savaş cephesi haline gelmiş bir ortamda, Googleın TF deki tekelci anlayışı. Kerasın yazarının google işe girmiş olması vs durumlar kerasın geleceği hakkında endişelendiriyordu.

Beklediğimiz gibi Büyük şirketlerin savaşı neticesinde geriye 3 şirket ve 3 Kütüphane kaldı
  • Tensorflow  /  Google
  • PyTorch     / Facebook
  • MxNet       / Amazon 

Theano gelişimi desteksizlikten  durduruldu.  CNTK ne yapıyor bilen yok.  Caffe2 yi PyTorch un içine gömdüler. Keras da müstakil versiyon yani değişik ktüphaneler üzerinde çalışabilen halini DURDURDU. Her tür backend ile çalışan en son versiyon Keras 2.2.5 oldu.  Duruma üzülsemde bir anlamda da hak vermek zorundaydım Theano zaten duruduruldu, CNTK ve MxNet cepheside Kerasa yeterli desteği çıkmayınca. Geliştiriciler mecburen böyle bir yola girmek zorunda kaldılar. Madem Tensorflow dışındakilerden destek gelmiyor. Tensorflowun içinde ki keras üzerinde yürümeye devam ederiz dediler.

Yazının başındaki Resmi
"If you’re asking “Keras vs. TensorFlow”, you’re asking the wrong question" 
yazısından aldım özetle dediği ; Kerasmı Tensorflow mu diye soruyorsanız yanlış soru soruyorsunuz diyor. Artık zaten böyle bir sorunun hiç bir anlamıda kalmadı
 Ama beklenmeyen şey Tensorflow 2.0 ile oldu. Tensorflow'un merkezine süpriz bir şekilde Keras geçti. Pek çok kaynakda sizde araştırın göreceksinizki eski NN kısmının kullanımının anlatıldığı felan yok. Tensorflow 2.x ile temel kısımlar keras üzerinden anlatılmaya başladı ve şimdilik öyle de devam edecek gibi görünüyor.


Elbette herşey güllük gülüstanlık değil. Tensorflow 2.x geçmekle öğrenmemiz gereken yeni şeylerde var. Mesela verilerle ilgili kısımlar için "tf.data" kullanmayı öğrenmek veya Ön eğitimli model kullanımı için TensorFlow Hub kullanmayı öğrenmek  gibi. 


Udacity de yayınlanan bu ücretsiz kurs ile Keras'dan TF 2.x geçişinizi hızlandırabilirisiniz.

Bu durumun pek çok avantajları var elbette. Çoklu GPU kullanımı , ve  elbette TPU kullanımı artık mümkün. Keza yazdığınız kodu pek çok ortamda çalıştırma imkanına kavuşmuş oluyoruz. En büyük çekincem Kerasın logo vari yapısının bozulup "subclassing"  yapısının mecburi hale getirilmesi. Yeni tip katman tanımlamaları için bu tür "subclassing" sistemi mecburi olabilir ama bu katmanların yine eski metodlarla bir araya getirilebilmesi şartıyla. Bütün yapıyı bu tip bir sisteme dönüştürdüğünüzde Keras kullanmanın zannımca hiç bir anlamı kalmıyor malesef


Son olarak Kerasın ana geliştiricsinin fikirleri ve  "Francois Chollet" in tf.keras'ın detaylarını anlattığı 2 video ile yazımızı tamamlıyoruz.



Her türlü görüş ve önerilerinizi bekleriz.

Hiç yorum yok: