Makine öğreniminin bilmesi gereken 5 derin öğrenme çerçevesi

Lei Feng Net Not: Bu makale, Lei Feng'in altyazı grubu tarafından derlenen teknik bir blogdur. Asıl başlık Her Ciddi Makine Öğrencisinin Aşina Olması Gereken 5 Derin Öğrenme Çerçevesi ve yazar James Le'dir.

Tercüme | Yang Shuquan Zhang Xiaoxue Chen Mingfei Bitti | Fan Jiang

Resim kaynağı: Raphael Kohon Unsplash

Derin öğrenme, çok fazla hesaplama gerektirir. Genellikle birçok düğümü olan bir sinir ağı içerir ve her düğümün öğrenme sürecinde sürekli güncellenmesi gereken birçok bağlantısı vardır. Başka bir deyişle, sinir ağının her katmanı, aynı hesaplamaları yapan yüzlerce veya binlerce özdeş yapay nörona sahiptir. Bu nedenle, sinir ağının yapısı, GPU'nun (grafik işleme birimi) verimli bir şekilde gerçekleştirebileceği hesaplama türüne uygundur (GPU, aynı talimatın paralel hesaplanması için özel olarak tasarlanmıştır).

Son birkaç yılda derin öğrenme ve yapay zekanın hızla gelişmesiyle birlikte birçok derin öğrenme çerçevesinin de tanıtıldığını gördük. Derin öğrenme çerçevesi oluşturmanın amacı, derin öğrenme sistemlerini GPU'larda verimli bir şekilde çalıştırmaktır. Bu derin öğrenme çerçevelerinin tümü, Hesaplama grafiği Hesaplama grafiği kavramı, yapılması gereken hesaplamaların sırasını tanımlar. Bu çerçevelerde, hesaplama grafikleri oluşturabilen bir dil kullanırsınız ve dilin yürütme mekanizması, ana dilin kendisinden farklıdır. Ardından, hesaplama grafiği optimize edilebilir ve hedef GPU'da paralel olarak çalıştırılabilir.

Bu makalede, size derin öğrenmenin gelişimini destekleyen beş ana çerçeveyi tanıtmak istiyorum. Bu çerçeveler, veri bilimcilerin ve mühendislerin karmaşık sorunlar için derin öğrenme çözümleri oluşturmasını ve daha karmaşık görevleri gerçekleştirmesini kolaylaştırır. Bu, farklı teknoloji devleri tarafından desteklenen birçok açık kaynak çerçevesinin sadece küçük bir parçasıdır ve her biri daha hızlı inovasyonu teşvik eder.

1. TensorFlow (Google)

TensorFlow, başlangıçta Google Brain Team'deki araştırmacılar ve mühendisler tarafından geliştirilmiştir. Amacı, derin sinir ağları ve makine zekası araştırmalarıyla yüzleşmektir. 2015'in sonundan bu yana, TensorFlow kütüphanesi resmi olarak GitHub'da kaynak olarak açıldı. TensorFlow, grafik tabanlı hesaplamaları hızlı bir şekilde gerçekleştirmek için çok kullanışlıdır. Esnek TensorFlow API, GPU destekli mimarisi aracılığıyla modelleri birden çok cihaz arasında dağıtabilir.

Kısacası, TensorFlow ekosisteminin üç ana bileşeni vardır:

  • C ++ ile yazılmış TensorFlow API, modelleri tanımlamak ve modellerin verilerle eğitilmesi için API'ler içerir. Aynı zamanda kullanıcı dostu bir Python arayüzüne sahiptir.

  • TensorBoard, TensorFlow hesaplama grafiklerini analiz etmeye, görselleştirmeye ve hata ayıklamaya yardımcı olan bir görselleştirme araç setidir.

  • TensorFlow Serving, bir üretim ortamında önceden eğitilmiş makine öğrenimi modellerini dağıtmak için esnek, yüksek performanslı bir hizmet sistemidir. Sunum da C ++ ile yazılmıştır ve eski moddan yeni moda anında geçiş yapabilen Python arabirimi üzerinden erişilebilir.

TensorFlow, akademik araştırmalarda ve endüstriyel uygulamalarda yaygın olarak kullanılmaktadır. Bazı önemli güncel kullanımlar arasında Deep Speech, RankBrain, SmartReply ve Cihaz Üzerinde Bilgisayar Görü bulunmaktadır. TensorFlow'un GitHub projesindeki en iyi resmi kullanımlara, araştırma modellerine, örneklere ve öğreticilere göz atabilirsiniz.

Çalışan bir örneğe bakalım. Burada, TensorFlow'daki L2 kaybına dayalı 2 katmanlı bir ReLU ağını eğitmek için rastgele verileri kullanıyorum.

Bu kodun iki ana bileşeni vardır: Hesaplama grafiğini tanımlayın ve grafiği birden çok kez çalıştırın . Hesaplama grafiğini tanımlarken, x girişi, w1 ve w2 ağırlıkları ve hedef y için yer tutucular oluşturdum. Daha sonra ileri geçişte, hedef y'nin tahminini ve kayıp değerini (y'nin gerçek değeri ile kayıp değerinin tahmin edilen değeri arasındaki L2 mesafesi) hesaplarım. Son olarak, Tensorflow'un w1 ve w2 için gradyan kaybını hesaplamasına izin verdim.

Hesaplama grafiği yapımını tamamladıktan sonra, hesaplama grafiğini çalıştırmak için bir iletişim kutusu oluşturuyorum. Burada, haritayı oluştururken oluşturulan yer tutucuları (yer tutucular) dolduracak ve değerlerini x, y, w1, w2'ye sağlayacak bir numpy dizisi oluşturdum. Ağı eğitmek için, hesaplama grafiğini tekrar tekrar çalıştırıyorum, ağırlıkları güncellemek için gradyanları kullanıyorum ve daha sonra, grad_w1 ve grad_w2 gibi bir kayıp dizisi elde ediyorum.

Keras: Premium paketleme

Derin öğrenme çerçevesi iki soyutlama seviyesinde çalışır: düşük seviye - matematiksel işlemlerin ve sinir ağı temel varlıklarının gerçekleştirilmesi (TensorFlow, Theano, PyTorch vb.) Ve yüksek seviye - modeller gibi sinir ağı soyutlamasını uygulamak için düşük seviyeli temel varlıkların kullanımı Ve katmanlar (Keras).

Keras, TensorFlow veya Theano olabilen arka uç kitaplığı için bir sarmalayıcıdır; bu, arka uç kitaplığı olarak Keras'ı TensorFlow ile kullanıyorsanız, aslında TensorFlow kodunu çalıştırdığınız anlamına gelir. Keras, sinir ağı teknolojisi kullanıcılarını hedeflediği ve veri bilimi uygulayanlar için çok uygun olduğu için sizin için birçok temel detayı düşündü. Basit ve hızlı prototip oluşturmayı destekler, birden çok sinir ağı mimarisini destekler ve CPU / GPU üzerinde sorunsuz bir şekilde çalışır.

Bu örnekte, önceki örneğe benzer bir sinir ağını eğitmek için, önce model nesnesini bir dizi katman olarak tanımlıyorum ve sonra optimize edici nesneyi tanımlıyorum. Ardından, modeli oluşturuyorum, kayıp fonksiyonunu belirtiyorum ve modeli eğitmek için tek bir "uyum" eğrisi kullanıyorum.

2. Theano (Montreal Üniversitesi)

Theano, CPU veya GPU üzerinde çalışabilen hızlı sayısal hesaplamalar için başka bir Python kitaplığıdır. Montreal Üniversitesi'nden Montreal Learning Algorithm Group tarafından geliştirilen açık kaynaklı bir projedir. En belirgin özelliklerinden bazıları arasında GPU'nun şeffaf kullanımı, NumPy ile yakın entegrasyon, verimli sembol farklılaştırma, hız / kararlılık optimizasyonu ve kapsamlı birim testi bulunur.

Ne yazık ki, Youshua Bengio (MILA Lab başkanı) Kasım 2017'de Theano'yu artık aktif olarak sürdürmeyecek veya geliştirmeyeceklerini açıkladı. Bunun nedeni, Theano tarafından yıllar içinde tanıtılan yenilikçi teknolojilerin çoğunun artık diğer çerçeveler tarafından benimsenmiş ve geliştirilmiş olmasıdır. İlgileniyorsanız, yine de açık kaynak kitaplığına katkıda bulunabilirsiniz.

Theano, birçok yönden TensorFlow'a benzer. Öyleyse, bir sinir ağını eğitmek için aynı parti boyutunu ve girdi / çıktı boyutunu kullanan başka bir kod örneğine bakalım:

İlk önce Theano sembolik değişkenlerini tanımladım (TensorFlow yer tutucularına benzer). İleriye doğru yayılma için tahmini ve kaybı hesaplıyorum; geri yayılma için gradyanı hesaplıyorum. Daha sonra veri ve ağırlıklara dayalı olarak kaybı, puanı ve gradyanı hesaplamak için bir fonksiyon derledim. Son olarak, ağı eğitmek için bu işlevi birkaç kez çalıştırdım.

3. PyTorch (Facebook)

Pytorch, akademik araştırmacılar arasında çok popüler ve aynı zamanda nispeten yeni bir derin öğrenme çerçevesidir. Facebook yapay zeka araştırma grubu, önceki veritabanı Torch'un kullanımında karşılaşılan bazı sorunların üstesinden gelmek için pyTorch'u geliştirdi. Lua programlama dilinin düşük popülaritesi nedeniyle Torch, Google TensorFlow'un hızlı gelişimini hiçbir zaman deneyimleyemeyecek. Bu nedenle PyTorch, birçok araştırmacı, geliştirici ve veri bilimcinin aşina olduğu orijinal Python zorunlu programlama stilini benimser. Aynı zamanda, zaman serileri ve doğal dil işleme verileri üzerinde çalışan araştırmacılar ve mühendisler için oldukça çekici kılan bir özellik olan dinamik hesaplama grafiklerini de destekler.

Şimdiye kadar Uber, PyTorch'u en iyi şekilde kullandı ve PyTorch'u arka ucu olarak kullanan genel olasılıklı bir programlama dili olan Pyro'yu geliştirdi. PyTorch'un dinamik farklılaştırılmış yürütme yetenekleri ve gradyan oluşturma yeteneği, olasılık modellerindeki rastgele işlemler için çok değerlidir.

PyTorch'un 3 soyutlama seviyesi vardır:

Tensör : Zorunlu ndarray, ancak GPU'da çalışır

değişken : Grafikteki düğümleri hesaplayın; verileri ve gradyanları saklayın

Modül : Sinir ağı katmanı; durum veya öğrenilebilir ağırlıkları depolayabilir

Burada tensör soyutlama seviyesine odaklanacağım. PyTorch tensörleri uyuşuk diziler gibidir, ancak GPU üzerinde çalıştırılabilirler. Yerleşik bir hesaplama grafiği veya gradyan veya derin öğrenme kavramı yoktur. Burada, 2 katmanlı bir ağa uyması için PyTorch Tensörleri kullanıyoruz:

Gördüğünüz gibi, önce veri ve ağırlıklar için rastgele tensörler oluşturuyorum. Daha sonra ileri yayılma sırasındaki tahmini ve kaybı hesaplıyorum ve geri yayılma sırasında eğimi manuel olarak hesaplıyorum. Ayrıca her ağırlık için gradyan iniş adım boyutunu da ayarladım. Son olarak, işlevi birden çok kez çalıştırarak ağı eğitiyorum.

4. Meşale (NYU / Facebook)

Şimdi Torch hakkında konuşacağız. Facebook'un açık kaynak makine öğrenimi kitaplığı, bilimsel hesaplama çerçevesi ve Lua programlama diline dayalı komut dosyası dilidir. Çok çeşitli derin öğrenme algoritmaları sağlar ve Facebook, IBM, Yandex ve diğer şirketler tarafından veri akışındaki donanım sorunlarını çözmek için kullanılmıştır.

PyTorch'un doğrudan atası olan Torch ve PyTorchg birçok C arka ucunu paylaşır. 3 soyutlama seviyesine sahip PyTorch'un aksine, Torch'un yalnızca iki tane vardır: Tensör ile Modül . İki katmanlı bir sinir ağını eğitmek için Torch tensörünü kullanan bir kod öğreticisini deneyelim:

Başlangıçta, çok katmanlı bir sinir ağı modeli ve bir kayıp işlevi oluşturdum. Daha sonra, bir geri izleme fonksiyonu tanımlıyorum, ağırlıkları giriyorum ve ağırlıklarda bir kayıp / gradyan oluşturuyorum. Fonksiyonun içinde, ileri geçişteki tahmini ve kaybı ve geri geçişteki eğimi hesaplarım. Son olarak, optimizasyon için geri izleme işlevini tekrar tekrar optimize ediciye iletiyorum.

5. Caffe (UC Berkeley)

Caffe, ifade gücü, hızı ve modüler düşünme özelliğine sahip derin bir öğrenme çerçevesidir. Berkeley Yapay Zeka Araştırma Grubu ve Berkeley Vizyon ve Öğrenme Merkezi tarafından geliştirilmiştir. Çekirdeği C ++ ile yazılmış olmasına rağmen, Caffe'nin Python ve Matlab ile ilgili arayüzleri vardır. Bu, ileri besleme sınıflandırma modellerinin eğitimi veya ince ayarı için çok kullanışlıdır. Araştırmada pek kullanılmasa da, topluluğa katkıda bulunanların kanıtladığı gibi, dağıtım modellerinde hala popülerdir.

Caffe ile sinir ağlarını eğitmek ve ince ayar yapmak için 4 adımdan geçmeniz gerekir:

1. Verileri dönüştürün: Veri dosyalarını okuruz, sonra temizler ve Caffe'nin kullanabileceği bir formatta saklarız. Veri ön işleme ve depolama için bir Python betiği yazacağız.

2. Modeli tanımlayın: Model, sinir ağının yapısını tanımlar. CNN mimarisini seçip parametrelerini yapılandırma dosyasında .prototxt uzantısıyla tanımlıyoruz.

3. Çözücüyü tanımlayın: Çözücü, model optimizasyonundan sorumludur ve gradyan inişinin nasıl gerçekleştirileceğiyle ilgili tüm bilgileri tanımlar. Çözücü parametrelerini yapılandırma dosyasında .prototxt uzantısıyla tanımlıyoruz.

4. Modeli eğitin: Modeli ve çözücüyü hazırladıktan sonra, terminalden caffe binary (kafein) çağırarak modeli eğitiyoruz. Modeli eğittikten sonra eğitilmiş modeli .caffemodel uzantılı bir dosyada alacağız.

Caffe için kod gösterileri yapmayacağım, ancak Caffe'nin ana sayfasında bir eğitim görebilirsiniz. Genel olarak, Caffe ileri beslemeli ağlar ve mevcut ağların ince ayarı için çok kullanışlıdır. Herhangi bir kod yazmadan modeli kolaylıkla eğitebilirsiniz. Python arayüzü çok kullanışlıdır çünkü modeli Python kodunu kullanmadan dağıtabilirsiniz. Olumsuz yanı, her yeni GPU katmanı için C ++ çekirdek kodu (Caffe altında) yazmanız gerektiğidir. Bu nedenle, büyük ağların (AlexNet, VGG, GoogLeNet, ResNet vb.) Kurulması çok zahmetli olacaktır.

Hangi derin öğrenme çerçevesini kullanmalısınız?

Theano artık geliştirilmediğinden, Torch pek çok insanın aşina olmadığı Lua dilinde yazılmıştır ve Caffe hala erken aşamadadır.TensorFlow ve PyTorch, derin öğrenme uygulayıcılarının çoğu için tercih edilen çerçeve haline gelmiştir. Her iki çerçeve de Python kullansa da, aralarında bazı farklılıklar vardır:

PyTorch daha temiz bir arayüze sahiptir, kullanımı daha kolaydır, özellikle yeni başlayanlar için uygundur. Kodun çoğu, kütüphaneye karşı savaşmak yerine yazmak için daha sezgiseldir. Aksine, TensorFlow daha karmaşık, küçük, belirsiz bir kitaplığa sahiptir.

Ancak, TensorFlow daha fazla desteğe ve çok büyük, canlı ve yardımsever bir topluluğa sahiptir. Bu, TensorFlow'un PyTorch'tan daha fazla çevrimiçi kurs, kod öğreticisi, belge ve blog yazısı olduğu anlamına gelir.

Başka bir deyişle, yeni bir platform olarak PyTorch, henüz mükemmelleştirilmemiş birçok ilginç özelliğe sahiptir. Ancak şaşırtıcı olan şey, PyTorch'un bir yıldan biraz fazla bir sürede büyük başarılar elde etmesi.

TensorFlow daha ölçeklenebilir ve dağıtılmış yürütmeyle çok uyumludur. Yalnızca GPU'dan gerçek zamanlı deneme yanılmaya dayalı yoğun dağıtılmış pekiştirmeli öğrenmeyi içeren dev sistemlere kadar her şeyi destekler.

En önemlisi, TensorFlow " Tanım-Çalıştır ", grafik yapısında koşulları ve yinelemeleri tanımlayın ve ardından çalıştırın. Öte yandan, PyTorch" Operasyon tarafından tanımlandı ", ileriye dönük hesaplama işlemi sırasında grafik yapısının gerçek zamanlı olarak tanımlandığı". Başka bir deyişle, TensorFlow kullanır Statik hesaplama grafiği PyTorch kullanırken Dinamik hesaplama grafiği . Dinamik grafik tabanlı yöntem, karmaşık mimariler (dinamik sinir ağları gibi) için çalıştırması daha kolay hata ayıklama işlevleri ve daha güçlü işleme yetenekleri sağlar. Statik grafik tabanlı yöntem, mobil cihazlara daha rahat bir şekilde dağıtılabilir, daha farklı mimarilere dağıtımı daha kolay ve önceden derleme yeteneğine sahiptir.

Bu nedenle, PyTorch meraklılar ve küçük projelerin hızlı prototiplenmesi için daha uygundur, TensorFlow ise özellikle platformlar arası ve gömülü dağıtım düşünüldüğünde büyük ölçekli dağıtım için daha uygundur. TensorFlow, zaman testine dayanmıştır ve hala yaygın olarak kullanılmaktadır. Büyük projeler için daha fazla işleve ve daha iyi ölçeklenebilirliğe sahiptir. PyTorch, öğrenmesi gittikçe kolaylaşıyor, ancak TensorFlow ile aynı entegre işlevlere sahip değil. Bu, hızlı bir şekilde tamamlanması gereken küçük projeler için kullanışlıdır, ancak ürün dağıtımı için en iyi seçim değildir.

Resim kaynağı: Jamie StreetonUnsplash

Sonuna yaz

Yukarıdaki liste, birçok çerçeve arasında yalnızca daha öne çıkan çerçevelerdir ve çoğu Python dilini destekler. Son birkaç yılda DeepLearning4j (Java), Apache'nin MXNet (R, Python, Julia), Microsoft CNTK (C ++, Python) ve Intel'in Neon (Python) gibi birkaç yeni derin öğrenme çerçevesi piyasaya sürüldü. Her çerçeve farklıdır çünkü farklı kişiler tarafından farklı amaçlar için geliştirilirler. Bütünün genel bir anlayışına sahip olmak, bir sonraki derin öğrenme probleminizi çözmenize yardımcı olacaktır. Sizin için en iyi seçeneği seçerken, kullanım kolaylığı (mimari ve işlem hızı açısından), GPU desteği, öğreticiler ve eğitim materyalleri edinmedeki zorluk, sinir ağı modelleme yetenekleri ve desteklenen dillerin hepsi önemli hususlardır.

Orijinal blog sitesi https://heartbeat.fritz.ai/the-5-deep-learning-frameworks-every-serious-machine-learner-should-be-familiar-with-93f4d469d24c

Leifeng Subtitle Group'un (leiphonefansub) WeChat hesabını arkadaş olarak ekle

Yapay Zeka Gönüllüsü Olmak İçin "Katılmak istiyorum" açıklaması! Lei Feng Ağı Lei Feng Ağı

Bu askeri eğitim! "Dünün Mavi Gökyüzü" filmi eğlenceli ve genç bir kalp çekiyor
önceki
Song Zhenin cümlesi sadece başlangıç ve Wang Baoqiangın "Mutlu Çiçek" e giden yolu devam edecek!
Sonraki
Mi 5C casus fotoğrafları tekrar ortaya çıktı: aşırı dar çerçeve güzel, fiyatı 999 yuan olabilir
Ideal ONE mevcut zorlukların üstesinden gelebilir ve seri üretime ulaşabilir mi?
Açık dünya ve özgünlük hakkında konuşurken, "Shenmue 3" devasa yeni zeka geliyor
Etki alanı adları ve ticari markalar sıklıkla kayıtlıdır! "Resmi duyuru" gibi bu ateşli çevrimiçi kelimelerin neden bu kadar sihirli gücü var?
Binlerce insansız hava aracı bir "telaş" içinde hareket ediyor; Volkswagen, Didi ile bir ortak girişim kuracak; LeEco Video Uygulaması şu anda yasadışı reklamlarla kumar oynuyor | Lei Feng Morning Po
Tianjin Ekonomik ve Teknolojik Kalkınma Bölgesi liderleri Huaqiang Akıllı Ev Uluslararası Ticaret Merkezini ziyaret etti
OnePlus 3T bir randevu açar: 30 Kasım'da başlayın!
"Wu Shuang" "İnsan Hazinesi Chow Yun Fa" nın sırrını tamamen ortaya koyuyor
Elektrikli araçlar ile yakıtlı araçların ısı dağılımı arasındaki fark nedir?
"Cyberpunk 2077" erkek kahramanı "V" şekli açıklandı, fütürist anlamda dolu
.COM markasının yurt dışı terminal satın alımı, netizenler 10 milyon ABD dolarına ulaşabileceğini tahmin ediyor
OnePlus 6T VS iPhone XS Max, hangisi gece portreleri için daha iyi
To Top