Pazar, Mayıs 17, 2020

Python ile Derin Öğrenme


Bazen söylemek istediklerimi çok karmaşık söyleyebiliyorum.  Bir önceki yazımızda anlatmak istediğimiz özetle şudur.  Tek başına Keras kullanmak artık mümkün değil. Tesorflow'a geçmek zorundayız.  Ama bunu yaparken Kerasdanda vazgeçmiş olmuyoruz çünkü Tensordlow 2.x den sonra Kerası merkeze almış bir yapısı var.

Bu konuda Türkçe basılı kaynak isytenlere önerebileceğimiz yegane kaynak kitap "Python ile Derin Öğrenme" kitabıdır. Bu kitap bir tercüme çalışması. Orijinal Halini "Francois Chollet" yazmış. 

Orjinal Kitap Linki  :  Deep Learning with Python

Tercümesini Bilgin Aksoy  kardeş yaptı. Karınca kararınca bizde düzenlemesine yardımcı olduk. Buzdağı yayınevi de basımını yaptı.

Türkçe Kitap Linki :  Python ile Derin Öğrenme


Kitap tanıtımından alıntı yapalım

Bu kitap, derin öğrenmeyi sıfırdan öğrenecek ya da bilgilerini artıracak herkes için yazılmıştır. Makine öğrenmesi mühendisi, yazılım geliştirici veya üniversite öğrencisi de olsanız bu kitapta değerli sayfalar bulacaksınız.Bu kitap, uygulamalarla ve kod yazarak derin öğrenmeyi öğretmeye çalışmaktadır. Matematiksel notasyon yerine sayısal kavramları kod örnekleriyle açıklayarak makine öğrenmesi, derin öğrenmenin temel fikirleri hakkında uygulamalı bilinç oluşturmaya çalışmaktadır. Ayrıntılı olarak açıklamaların eklendiği 30’dan fazla kod örneğinden, pratik tavsiyelerden ve derin öğrenmeyi somut problemlerin çözümünde kullanmayabaşlamak için gerekli her şeyin detaylı açıklamalarından öğreneceksiniz. Kod örnekleri Python derin öğrenme kütüphanesi Keras’ı arka planda TensorFlow’la kullanmaktadır. Keras en popüler ve hızlı gelişen derin öğrenme kütüphanelerinden biridir ve genelde yeni başlayanlara yaygın olarak tavsiyeedilmektedir. Bu kitabı okuduktan sonra derin öğrenmenin ne olduğu ne zaman uygulanabilir olduğu ve kısıtları hakkında sağlam bir temele sahip olacaksınız. Makineöğrenmesi problemlerine yaklaşmada standart bir yol haritasını ve sıkça karşılaşılan sorunlara nasıl çözüm getireceğinizi öğreneceksiniz. Görüntü sınıflandırma, zaman serisi tahmini, duygu analizi, resim ve metin üretme gibi bilgisayarlı görüden doğal dil işlemeye kadar birçok gerçek hayat probleminde Keras’ı kullanabileceksiniz.
Kitabın içeriğiyle ilgili daha detaylı bilgi için bakınız

 Aslında kitap çıkalı epey zaman oldu. Şimdi niçin duyuru yapıyoruz konusuna geçersek.  Bu kitaptaki örnek kodların Tensorflow .2x için adaptasyonunu yapalım diye bir çalışma içine girdik.

https://github.com/birolkuyumcu/deep-learning-with-python-notebooks-tf2.x

Tensorflow adaptasyonu deyince gözünüz korkmasın. Kodun çoğunda değişiklik olmuyor. Kitap yazılalı epey zaman geçmiş bu yüzden Tensorflow adaptasyou olmasada versiyon uyumsuzluğundan düzeltilmesi gereken  yerler olabiliyor. Peyder pey kodları düzenleyip paylaşacağız orjinal kodlara bakmak isterseniz burada


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

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.