MXNet Yazarı / Amazon Baş Bilimcisi Li Mu
Yazar: MXNet yazar / yönetmen bilim adamı Li Mu Amazon
Xin Zhiyuan Rehberi PyTorch, tamamen zorunlu bir derin öğrenme çerçevesidir. Popüler, çünkü basit ve anlaşılması kolay bir programlama arayüzü sağlıyor ve hızla popülerlik kazanıyor. MXNet, ndarray ve gluon modülleri aracılığıyla PyTorch'a çok benzer bir programlama arayüzü sağlar. Bu makale, aynı algoritmayı uygulamak için bu iki çerçevenin nasıl kullanılacağını kısaca karşılaştıracaktır.
PyTorch, tamamen zorunlu bir derin öğrenme çerçevesidir. Popüler, çünkü basit ve anlaşılması kolay bir programlama arayüzü sağlıyor ve hızla popülerlik kazanıyor. Örneğin, Caffe2 yakın zamanda PyTorch'a dahil edildi.
Özellikle bilmediğiniz şey, MXNet'in ndarray ve gluon modülleri aracılığıyla PyTorch'a çok benzer bir programlama arayüzü sağlamasıdır. Bu makale, aynı algoritmayı uygulamak için bu iki çerçevenin nasıl kullanılacağını kısaca karşılaştıracaktır.
PyTorch, varsayılan olarak yüklemek için conda kullanır, örneğin
Ve MXNet daha yaygın olarak kullanılan pip'dir. Gece sürümünü kurmak için --pre burayı kullandık
Çok boyutlu matris
Çok boyutlu matrisler için PyTorch Torch stilini takip eder ve tensör olarak adlandırır, MXNet ise NumPy ndarray adını kullanır. Daha sonra, her bir öğenin 1 olarak başlatıldığı iki boyutlu bir matris oluşturuyoruz. Sonra her elemana 1 ekleyin ve yazdırın.
PyTorch:
MXNet:
Paket isimlerindeki farkı göz ardı ederek, buradaki temel fark, MXNet'in şekil parametrelerinin tıpkı NumPy gibi parantez içine alınması gerektiğidir.
Biraz daha karmaşık bir örneğe bakalım. Burada, MINST veri setinde bir model eğitmek için çok katmanlı bir algılayıcı (MLP) kullanıyoruz. Karşılaştırmayı kolaylaştırmak için 4 küçük parçaya ayırıyoruz.
Verileri oku
Burada MNIST veri setini indirip hafızaya yüklüyoruz, böylece partileri tek tek okuyabiliriz.
PyTorch:
MXNet:
Buradaki temel fark, MXNet'in veri değişikliğinin okunan grubun birinci öğesine, yani MNIST resmine, ikinci etiket öğesi yerine uygulandığını belirtmek için transform_first kullanmasıdır.
Modeli tanımlayın
Aşağıda sadece tek bir gizli katmana sahip bir MLP tanımlıyoruz.
PyTorch:
MXNet:
Sıralı kapsayıcıyı, bir sinir ağı oluşturmak için katmanları bir araya getirmek için kullandık. MXNet ve PyTorch arasındaki temel farklar şunlardır:
Giriş boyutunu belirlemenize gerek yok, bu sistem daha sonra otomatik olarak çıkaracaktır
Tamamen bağlı ve evrişimli katmanlar, etkinleştirme işlevlerini belirleyebilir
Daha sonra modeli okurken ve yazarken gerekli olan her katmana benzersiz bir ad eklemek için bir name_scope etki alanı oluşturmanız gerekir
Model başlatma işlevini açıkça çağırmamız gerekiyor.
Herkes sadece sinir ağlarının her katmanı Sıralı altında tek tek çalıştırabileceğini bilir. PyTorch, ilerlemenin nasıl yürütüleceğini özelleştirmek için nn.Module'u devralabilir. Benzer şekilde, MXNet, benzer efektler elde etmek için nn.Block'u devralabilir.
Kayıp işlevi ve optimizasyon algoritması
PyTorch:
MXNet:
Burada çapraz entropi fonksiyonunu ve en basit stokastik gradyan inişini ve 0,1'lik sabit bir öğrenme oranını kullanıyoruz.
Eğitim
Son olarak, eğitim algoritmasını uyguladık ve çıktı sonuçlarını ekledik. Her seferinde farklı ağırlıklar ve veri okuma sırası kullanacağımızı, dolayısıyla sonucun her seferinde farklı olabileceğini unutmayın.
PyTorch
MXNet
MXNet ve PyTorch arasındaki temel farklar aşağıdaki gibidir:
Girdiyi Değişken'e koymanıza gerek yoktur, ancak daha sonra türetebilmek için hesaplamayı mx.autograd.record () içine koymanız gerekir
Her seferinde gradyanı 0 olarak silmeye gerek yoktur, çünkü yeni gradyan, adımı biriktirmek yerine yazılır. MXNet'in belirli bir parti boyutuna ihtiyacı vardır
Çok boyutlu diziyi skalere dönüştürmek için asscalar () 'ı çağırmanız gerekir.
Bu örnekte, MXNet, PyTorch'tan iki kat daha hızlıdır. Elbette herkes bu tür karşılaştırmalar konusunda dikkatli olmalı.
Sonraki adım
Daha ayrıntılı MXNet öğreticisi:
Bize bir mesaj bırakmaya hoş geldiniz. MXNet'in sahip olmasını umduğunuz PyTorch'un kolaylıkları nelerdir?
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_1; 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).