Hangisinin Keras ve TensorFlow'dan daha iyi olduğunu anlamak için bir makale

Xinzhiyuan önerilir

Aslında, 2017'nin ortalarında Keras büyük ölçekte benimsendi ve TensorFlow ile entegre edildi. TensorFlow + Keras'ın bu kombinasyonu şunları yapmanızı sağlar:

  • Modeli tanımlamak için Keras arayüzünü kullanın;

  • Belirli TensorFlow işlevlerine ihtiyacınız varsa veya Keras'ın desteklemediği ancak TensorFlow'un desteklediği özel işlevleri uygulamanız gerekiyorsa, TensorFlow'a geri dönebilirsiniz.

  • Basitçe söylemek gerekirse, TensorFlow kodunu doğrudan Keras'ın modeline veya eğitim hattına ekleyebilirsiniz!

    Ama lütfen beni yanlış anlamayın, TensorFlow'u anlamanıza gerek olmadığını söylemiyorum. Demek istediğim, eğer sen:

  • Derin öğrenmeye yeni başladım ...

  • Sonraki proje için seçiliyor ...

  • Keras veya TensorFlow arasında hangisinin "daha iyi" olduğunu bilmek ister misiniz ...

  • Önerim, Keras ile başlamak ve ardından TensorFlow'a dalmak, böylece ihtiyacınız olan bazı özel özellikleri edinebilirsiniz.

    Bu makalede, Keras'ı sinir ağlarını eğitmek için nasıl kullanacağınızı ve modelleri eğitmek için doğrudan TensorFlow kitaplığında oluşturulan Keras + TensorFlow kombinasyonunu nasıl kullanacağınızı göstereceğim.

    Keras veya TF hangisini öğrenmeliyim?

    Makalenin geri kalanında Keras ve TensorFlow tartışmalarını ve bu konunun aslında neden yanlış bir soru olduğunu tartışmaya devam edeceğim.

    Evrişimli bir sinir ağı (CNN) uygulamak için standart keras modülünü ve TensorFlow'un tf.keras modülünü kullanacağız.

    CNN'i örnek bir veri seti üzerinde eğiteceğiz ve ardından sonuçları kontrol edeceğiz - Keras ve TensorFlow'un birlikte çok uyumlu bir şekilde çalışabileceğini göreceksiniz.

    En önemlisi, Keras ve TensorFlow arasındaki tartışmanın neden anlamsız olduğunu anlayacaksınız.

    TensorFlow'un Keras'ın resmi TensorFlow sürümüne entegrasyonunu duyurmasının üzerinden bir yıldan fazla zaman geçmesine rağmen, birçok derin öğrenme uygulayıcısı hala Keras'a tf.keras alt modülü aracılığıyla erişebileceklerini bilmiyor, ki ben şaşırdım.

    Daha da önemlisi, Keras + TensorFlow entegrasyonu sorunsuzdur ve TensorFlow kodunu doğrudan Keras modeline yerleştirebilirsiniz.

    TensorFlow'da Keras'ı kullanmak size her iki dünyanın da en iyisini getirecektir:

  • Modeller oluşturmak için Keras tarafından sağlanan basit ve sezgisel API'yi kullanabilirsiniz;

  • Keras API, scikit-learn'e çok benzer (makine öğrenimi API'lerinin "altın standardı" olarak kabul edilir);

  • Keras API modülerdir ve kullanımı kolaydır;

  • Özel bir uygulamaya veya daha karmaşık bir kayıp işlevine ihtiyacınız olduğunda, doğrudan TensorFlow'a girebilir ve kodun Keras modeliyle otomatik olarak bütünleşmesine izin verebilirsiniz.

  • Son birkaç yılda, derin öğrenme araştırmacıları, uygulayıcıları ve mühendisleri genellikle aşağıdaki seçimleri yapmak zorunda kaldı:

  • Kullanımı kolay ancak özelleştirmesi zor olan Keras kitaplığını seçtim.

  • Veya kullanımı zor TensorFlow API'yi seçip daha fazla kod mu yazın?

  • Neyse ki artık mücadele etmemize gerek yok.

    Kendinizi hala böyle bir soru sorarken bulursanız, lütfen bir adım geri atın - yanlış soruyu soruyorsunuz - her iki çerçeveye aynı anda sahip olabilirsiniz.

    Şekilde görüldüğü gibi, TensorFlow (tf) içe aktarın ve ardından tf.keras'ı çağırın Keras'ın aslında TensorFlow'un bir parçası olduğu görülebilir.

    Keras'ı tf.keras'a dahil etmek, standart Keras paketlerini kullanarak basit ileri beslemeli sinir ağları uygulamanıza olanak tanır:

    Ardından, aynı ağı uygulamak için tf.keras alt modülünü kullanın:

    Bu, tf.keras kullanmanız gerektiği anlamına mı geliyor? Standart Keras paketi eski mi? Tabii ki değil.

    Kütüphane olarak Keras kendi başına kullanılabilir, bu nedenle ikisi gelecekte yollarını ayırabilir. Ancak, Google resmi olarak Keras ve TensorFlow'u desteklediğinden, bunun gerçekleşmesi olası görünmüyor.

    Anahtar şudur:

    Keras'ta kod yazmaya alışkınsanız, lütfen yazmaya devam edin.

    Ancak esas olarak TensorFlow kullanıyorsanız, Keras API'yi düşünmeye başlamalısınız:

  • TensorFlow'da yerleşiktir;

  • Kullanması daha kolaydır;

  • Belirli işlevleri uygulamak için TensorFlow'u kullanmanız gerektiğinde, bunu doğrudan Keras modeline entegre edebilirsiniz.

  • Örnek veri setimiz

    CIFAR-10 veri seti 10 kategori içerir ve bunu tanıtımımızda kullanacağız.

    Basit olması için, CIFAR-10 veri setinde iki ayrı evrişimli sinir ağını eğitmek için aşağıdaki yöntemi kullanacağız:

  • TensorFlow + Keras;

  • Tf.keras'ın Keras alt modülü.

  • Ayrıca Keras modeline özel TensorFlow kodunun nasıl dahil edileceğini de göstereceğim.

    Proje yapımız

    Proje yapımızı terminalde görüntülemek için ağaç komutunu kullanabilirsiniz:

    Pyimagesearch modülü pip aracılığıyla kurulamaz, lütfen makalenin sonunda verilen indirme bağlantısına tıklayın. Şimdi bu modül için iki önemli Python dosyasına bakalım:

    • minivggnetkeras.py: MiniVGGNet'in (Opportunity VGGNet'in derin öğrenme modeli) Keras uygulaması.

    • minivggnettf.py: MiniVGGNet'in TensorFlow + Keras (yani tf.keras) uygulaması.

    Proje kök dizini iki Python dosyası içerir:

    • train_network_keras.py: Eğitim komut dosyasının Keras sürümü.

    • train_network_tf.py: Eğitim komut dosyasının TensorFlow + Keras sürümü, neredeyse tamamen öncekiyle aynı.

    Her komut dosyası, ilgili eğitim doğruluğunu ve kaybını üretecektir:

    • plot_keras.png

    • plot_tf.png

    Ağı eğitmek için Keras'ı kullanın

    Eğitimin ilk adımı, ağ mimarisini uygulamak için Keras'ı kullanmaktır.

    Minivggnetkeras.py dosyasını açın ve aşağıdaki kodu ekleyin:

    Önce modeli oluşturmak için gerekli olan bir dizi Keras paketini içe aktarıyoruz.

    Ardından MiniVGGNetKeras sınıfımızı tanımlayın:

    Build metodunu, inputShape'i ve input'u tanımlıyoruz.

    Ardından, evrişimli sinir ağının ana bölümlerini tanımlayın:

    Hacmin uzamsal boyutunu azaltmak için havuzlama katmanını uygulamadan önce bir dizi evrişim, ReLU aktivasyonu ve toplu normalizasyon katmanını istiflediğimizi göreceksiniz. Bırakma, aşırı oturmayı azaltmak için de kullanılır.

    Şimdi tamamen bağlı katmanı ağa ekleyin:

    Keras kullanarak CNN uyguladık ve şimdi eğitim için kullanılacak bir sürüş senaryosu oluşturduk.

    Train_network_keras.py'yi açın ve aşağıdaki kodu ekleyin:

    Önce gerekli paketleri ithal ediyoruz.

    • matplotlib, eğitim sonuçlarının görüntü dosyaları olarak kaydedilebilmesi için "Agg" olarak ayarlanmıştır.

    • Ardından MiniVGGNetKeras sınıfını içe aktarın.

    • Scikit-learn'ün LabelBinarizer'ı "tek sıcak" kodlama için ve sınıflandırma doğruluğunu yazdırmak için sınıflandırma_report kullanıyoruz.

    • Ardından veri kümesini içe aktarın.

    Komut satırı parametrelerini, görüntüyü kaydetmenin yolu olan --plot aracılığıyla iletiriz.

    Şimdi CIFAR-10 veri setini yükleyelim ve etiketleri kodlayalım:

    Önce eğitimi yükleyip çıkarıyoruz ve bölümleri test ediyoruz, bunları kayan noktalı sayılara dönüştürüyoruz ve veri ölçeklendirmesini gerçekleştiriyoruz.

    Sonra etiketleri kodluyoruz ve labelNames'i başlatıyoruz.

    Ardından modeli eğitmeye başlayalım:

    Önce eğitim parametrelerini ve optimizasyon yöntemlerini belirledik.

    Ardından modeli başlatmak ve derlemek için MiniVGGNetKeras.build yöntemini kullanıyoruz.

    Ardından eğitim programına başladık.

    Şimdi ağı değerlendirelim ve ortaya çıkan grafiği oluşturalım:

    Ağı, verilerin test segmentasyonuna göre değerlendirir, sınıflandırma raporu oluşturur ve son olarak sonuçları dışa aktarırız.

    Not: Modeli genellikle görüntü veya video işleme komut dosyalarında kullanabilmek için serileştirip dışa aktarırım, ancak bu makalenin kapsamı dışında olduğu için burada yapmayı planlamıyorum.

    Bir terminal açın ve aşağıdaki komutu yürütün:

    İşlemcimin bir dönemi tamamlaması 5 dakikadan fazla sürüyor.

    % 75 doğruluk elde ettik - kesinlikle en gelişmiş değil, ancak rastgele tahmin etmekten çok daha iyi (1/10).

    Küçük ağlar için doğruluk oranımız çok iyidir ve fazla uyum yoktur.

    Ağı eğitmek için TensorFlow ve tf.keras'ı kullanın

    Tf.keras kullanılarak oluşturulan MiniVGGNet CNN, tanıtım amacıyla değiştirilen etkinleştirme işlevi haricinde, doğrudan Keras kullanarak oluşturduğumuz modelle aynıdır.

    Artık Keras kitaplığını kullanarak basit bir CNN uyguladığımıza ve eğittiğimize göre, şunları yapmamız gerekiyor:

  • Aynı ağı elde etmek için TensorFlow'un tf.keras'ını kullanın;

  • Keras modeli, Keras kullanılarak uygulanmayan bir TensorFlow etkinleştirme işlevi içerir.

  • Öncelikle minivggnettf.py dosyasını açın, MiniVGGNet'in TensorFlow sürümünü uygulayacağız:

    İçe aktarma bölümünde yalnızca bir satır olduğunu unutmayın. Tf.keras alt modülü, doğrudan çağırabileceğimiz tüm Keras işlevlerini içerir.

    Lambda katmanını vurgulamak istiyorum - özel bir etkinleştirme işlevi olan CRELU (Birleştirilmiş ReLU) eklemek için kullanılırlar.

    Keras CRELU uygulamaz, ancak TensorFlow bunu TensorFlow ve tf.keras kullanarak yapar, CRELU'yu Keras modeline bir satır kodla ekleyebiliriz.

    Sonraki adım, MiniVGGNetTF'yi eğitmek için bir TensorFlow + Keras sürücü komut dosyası yazmaktır.

    Train_network_tf.py dosyasını açın ve aşağıdaki kodu ekleyin:

    Ardından komut satırı parametrelerini ayrıştırın.

    Ardından veri kümesini önceki gibi yükleyin.

    Hatların geri kalanı, aynı ayıklanmış eğitim / test bölümleri ve kodlama etiketleridir.

    Şimdi modeli eğitmeye başlayalım:

    Eğitim süreci hemen hemen aynı. Aynı eğitim sürecini sadece bu sefer tf.keras kullanarak uyguladık.

    Bir terminal açın ve aşağıdaki komutu yürütün:

    Eğitimden sonra aşağıdakilere benzer sonuçlar alacaksınız:

    RELU etkinleştirme işlevini CRELU ile değiştirerek% 76 doğruluk elde ettik. Ancak, bu% 1'lik artış, ağ ağırlıklarının rastgele başlatılmasından kaynaklanıyor olabilir ve doğruluktaki bu artışın gerçekten de CRELU'dan kaynaklandığını kanıtlamak için daha fazla çapraz doğrulama deneyine ihtiyaç vardır.

    Her durumda, ham doğruluk bu bölümün odak noktası değildir. Dikkat etmemiz gereken şey, standart Keras etkinleştirme işlevini Keras modeli içindeki TensorFlow etkinleştirme işleviyle nasıl değiştireceğimizdir!

    Ayrıca kendi özel etkinleştirme işlevinizi, kayıp / maliyet işlevinizi veya katmanınızı da kullanabilirsiniz.

    sonuç olarak

    Bu makalede, aşağıdakiler dahil olmak üzere Keras ve TensorFlow ile ilgili sorunları tartıştık:

    • Projemde Keras veya TensorFlow kullanmalı mıyım?

    • Hangisi daha iyi, TensorFlow mu Keras mı?

    • TensorFlow'u veya Keras'ı araştırmak için zaman harcamalı mıyım?

    Sonunda Keras ve TensorFlow arasındaki seçimin daha az önemli hale geldiğini gördük.

    Çünkü Keras kitaplığı tf.keras modülü aracılığıyla doğrudan TensorFlow'a entegre edilmiştir.

    İlgili kod indirme:

    https://app.monstercampaigns.com/c/hvovin011avqlrtdtz0j/

    Orijinal İngilizce:

    https://www.pyimagesearch.com/2018/10/08/keras-vs-tensorflow-which-one-is-better-and-which-one-should-i-learn/

    (Bu makale "AI Frontline" tarafından yetkilendirme ile yeniden basılmıştır, ID: ai-front)

    Topluluğa katıl

    Xinzhiyuan AI teknolojisi + endüstri topluluğunun işe alımında, AI teknolojisi + endüstri uygulamasına ilgi duyan öğrenciler, gruba katılmak için küçük bir WeChat hesabı ekleyebilir: aiera2015_3; incelemeyi geçtikten sonra gruba katılmaya davet edeceğiz. Topluluğa katıldıktan sonra grubu değiştirdiğinizden emin olun Açıklamalar (isim-şirket-pozisyon; profesyonel grup incelemesi katıdır, lütfen anlayın).

    Mercedes-Benz X-Class pikap: Navarre Brothers versiyonu kadar basit değil
    önceki
    Evde 10.000 yuan'dan fazla kayıp ve gelininin evlada dindarlığını sık sık öven Hangzhou teyzesi yardım edemez ama şüphe eder ... Netizen: Plastik kayınvalide aşkı
    Sonraki
    A hissesinin yavaş olması gerektiğine eminim boğa
    1.4T, 9AT, dört tekerlekten çekiş, Jeep rehberi hakkında kaç endişeniz ve sorunuz var?
    Futbol Birliği Kupası'na Genel Bakış: Dört Çin Süper Ligi takımının tümü ilerler, TEDA dar bir penaltı atışıyla kazanır, Luneng kazanır
    Jingdezhen'de büyük değişiklikler! 200'den fazla önde gelen kadro okuduktan sonra şaşırdı!
    Google, "iyi bir küresel yapay zeka" bulmak için 170 milyon ödül sunuyor. İncelemeye Jeff Dean liderlik ediyor. Çin üniversitelerinin bir şansı var!
    Chengyuan şapka takıyor ve Cui Peng göz alıcı bir performans sergiliyor, Luneng, Yanbian Beiguo'yu 6-0 yenerek Çin Fortune'a karşı bir sonraki turda
    Anti-Japon Savaşında Zhu De'nin Büyük Ruhsal Tutumu
    Renault Dongfeng Renault SUV ailesini tecrübe ettiğimde beni en çok heyecanlandıran şey Megane R.S. değil mi?
    Aklın çiçeği asla çiçek açmaz
    Red Hat'i 34 milyar dolara satın alın! IBM'in bir yüzyıldaki en büyük eli, bulut pazarı dönüyor!
    "Gezinen Dünya" nın en sıcak komplosu kışlada yeniden ortaya çıkıyor, onu izlemeyeceğinizden emin misiniz?
    "NIPS 2018" Toronto Üniversitesi tersine çevrilebilir RNN önermektedir: bellek büyük ölçüde azalır, performans azalmaz!
    To Top