İlk sinir ağınızı 30 satırdan daha az Keras koduyla yazmayı öğretin (kod eğitimiyle)

Çeviri: Chen Dan

Redaksiyon: He Zhonghua

Bu makalenin uzunluğu 3000 kelime , Okumanız tavsiye edilir 5 dakika

Bu makale, bir sinir ağını hızla uygulamak için Keras'ın nasıl kullanılacağını açıklar.

Yapay zeka ile ilk karşılaştığım zamanı hatırlayarak, bazı kavramların ne kadar ürkütücü göründüğünü açıkça hatırlıyorum. Bir sinir ağının ne olduğuna dair basit bir açıklamayı okurken, her cümlenin daha önce hiç görmediğiniz birçok sembolü içeren bir formül olduğu bilimsel bir makaleyi okumak kolaydır. Bu kağıtlar, uzmanlığınızı geliştirmenize yardımcı olabilecek inanılmaz içgörüye ve derinliğe sahip olsa da, ilk sinir ağınızı yazmaya başlamak aslında bu seslerden çok daha kolay!

Peki bir sinir ağı tam olarak nedir?

iyi soru! Python'da basit bir sinir ağını (NN olarak anılır) yazmaya ve uygulamaya başlamadan önce, belki de önce ne olduklarını ve neden bu kadar heyecan verici olduklarını anlamalıyız!

HNC Software'in kurucu ortağı Dr. Robert Hecht Nielsen bunu çok basit bir şekilde açıkladı.

Dış girdiye dinamik yanıtlar yoluyla bilgileri işleyen çok sayıda basit, birbiriyle yüksek oranda bağlantılı işlem öğesinden oluşan bir bilgi işlem sistemi. "Yapay Sinir Ağlarına Giriş: Birinci Bölüm" , Maureen Caudill, yapay zeka uzmanı, Şubat 1989.

Esasen, bir sinir ağı, bilgi veya veri modellerini tanımlamada çok iyi olan bir dizi matematiksel ifadedir. Sinir ağları bunu insan algısını simüle ederek yapar, ancak İnsanların yaptığı gibi görüntüleri "görmeyen" veya "tanımlamayan", ancak bu bilgiyi temsil etmek için sayıları içeren bir vektör veya skaler kullanan (yalnızca bir sayı içeren bir vektör) sinir ağıdır.

Bu bilgiyi, önceki katmanın çıktısını bir sonraki katmanın girdisi olarak kullanan birden çok katman aracılığıyla iletir. Bu katmanlardan geçerken, girdi bilgileri ağırlıklar ve önyargılar tarafından değiştirilecek ve çıktıyı eşleştirmek için etkinleştirme işlevine gönderilecektir. Daha sonra, gerçek çıktıyı beklenen çıktıyla karşılaştıran ve ardından işlevi, maliyeti en aza indirmek için geri yayılım adı verilen bir süreçle ağırlıkları ve sapmaları değiştirmesine ve ayarlamasına yardımcı olan bir maliyet işlevi aracılığıyla öğrenme gerçekleştirilir.

NN uygulama örneğimiz MNIST veri kümesini kullanacaktır.

MNIST örnek veri seti

MNIST, sinir ağlarının işlevini çok net bir şekilde gösterebildiği için "merhaba dünya" veri kümesi olarak kabul edilebilir. Veri seti, elle yazılmış rakamlardan oluşur ve bunları tanımak ve sınıflandırmak için bir sinir ağı eğiteceğiz.

Drago'ya girin ... Yani Keras.

Uygulama kolaylığı için Keras çerçevesini kullanacağız. Keras, Python'da yazılmış üst düzey bir API'dir. TensorFlow ve Theano gibi popüler çerçevelerde çalışır. NNS yazmanın doğasında var olan karmaşıklığı azaltmak için makine öğrenimi uygulayıcıları için bir soyutlama katmanı sağlar.

API'ye gerçekten aşina olmanız için Keras belgelerini incelemenizi tavsiye ederim. Ek olarak, bu eğiticiye ilham veren Francois chollet'in "Python Deep Learning" kitabını şiddetle tavsiye ediyorum.

Biraz GPU yakma zamanı

Bu eğitimde, arka uç olarak tensorflow ile keras'ı kullanacağız, bu nedenle bunlardan herhangi birini yüklemediyseniz, şimdi bunu yapmak için iyi bir zaman. Bunu, terminalde bu komutları çalıştırarak yapabilirsiniz.

Basit bir giriş örneğinin ötesine geçtiğinizde, Anaconda ortamınızı kurmak ve aşağıdakileri conda ile kurmak en iyisidir.

Artık sizinle ilk NN arasında gerekli olan tüm bileşenleri yüklediğinize göre, en sevdiğiniz IDE'yi açın ve gerekli Python modüllerini içe aktarmaya başlayalım!

Keras, öğrenmenize yardımcı olacak birçok veri kümesine sahiptir, neyse ki MNIST'imiz bunlardan biridir! Modeller ve katmanlar sinir ağımızı oluşturmamıza yardımcı olacak modüllerdir, to_categorical veri kodlamamız için kullanılır ... daha fazlası bundan sonra!

Artık gerekli modülleri aktardığımıza göre, veri setini bir eğitim seti ve bir test setine bölmek istiyoruz. Bu, aşağıdaki satırlarla basitçe yapılabilir.

Bu örnekte, sinir ağımız çıktısını etiketli verilerle karşılaştırarak öğreniyor. Sinir ağının çok sayıda el yazısıyla yazılmış basamağı tahmin etmesine izin verdiğimizi, ardından tahmin edilen sonucu gerçek etiketle karşılaştırdığımızı ve ardından karşılaştırma sonucunu modele beslediğimizi, ağırlıkları ve sapmaları ayarlayarak toplam maliyeti en aza indirdiğimizi anlayabilirsiniz.

Test seti ve eğitim setini oluşturduktan sonra artık modelimizi oluşturabiliriz.

network = models.Sequential () network.add (layer.Dense (784, activation = 'relu', input_shape = (28 * 28,))) network.add (layer.Dense (784, activation = 'relu',) )

Ben şahsen bunun yazarın hatası olduğunu anlıyorum.Genellikle sadece ilk katmanın input_shape net olması gerekir ve sonraki katmanlar otomatik olarak Keras tarafından hesaplanır.

network.add (layer.Dense (10, activation = 'softmax')) network.compile (optimizer = 'adam', loss = 'categorical_crossentropy', metrics =)

Biliyorum ... Biliyorum ... çok benziyor, ama birlikte parçalayalım! Ağ adı verilen bir sıra modelini başlatıyoruz.

Sinir ağı katmanını ekliyoruz. Bu örnekte yoğun katmanı (yani, tamamen bağlı sinir ağı katmanı) kullanacağız. Yoğun bir katman, her nöronun önceki katmandaki tüm nöronlardan girdi aldığı anlamına gelir. Toplam, çıktı uzayının boyutluluğunu ifade eder.Bunu bir sonraki katmana girdi sayısı olarak düşünebiliriz. 10 olası kategoriyle (0'dan 9'a kadar sayılar) bir sınıflandırma problemini çözmeye çalıştığımız için, son katmanda 10 birim vardır Potansiyel çıktı. Aktivasyon parametresi, kullanmak istediğimiz aktivasyon fonksiyonunu ifade eder.Aslında aktivasyon fonksiyonu, verilen girdiye göre çıktıyı hesaplayacaktır. Son olarak, giriş şekli, görüntünün piksel genişliğini ve yüksekliğini ifade eder.

Modeli tanımlayıp NN katmanımızı ekledikten sonra, modeli yalnızca kendi seçtiğimiz optimize ediciyi, seçtiğimiz kayıp işlevini ve modelin performansını değerlendirmek için kullanmak istediğimiz ölçümleri kullanarak derlememiz gerekir.

tebrikler! İlk sinir ağınızı kurdunuz!

Şimdi hala bazı sorularınız olabilir, örneğin: relu ve softmax nedir? Adam ne zaten? Bunların hepsi güzel sorular ... Bu soruların derinlemesine açıklaması NN girişimizin kapsamının biraz ötesindedir, ancak bu konuları daha sonraki bir makalede tartışacağız.

Verileri yeni oluşturulan modele girmeden önce, girdiyi modelin okuyabileceği bir formatta yeniden şekillendirmemiz gerekir. Girdiğimiz orijinal şekil, temelde 60.000 piksel yüksekliğe ve 28 x 28 genişliğe sahip bir görüntüyü temsil etmesidir. Verilerimizi yeniden şekillendirebilir ve eğitim görüntülerine ve test görüntülerine bölebiliriz.

Verilerimizi yeniden şekillendirmenin yanı sıra, onu kodlamamız da gerekiyor. Bu örnekte, dijital temsildeki birçok özelliği esasen dönüştüren kategorik kodlamayı kullanacağız.

Veri setimiz eğitim ve test setlerine bölündüğünde, modelimiz derlendiğinde ve verilerimiz yeniden şekillendirilip kodlandığında artık sinir ağımızı eğitmeye hazırız! Bunu yapmak için fit fonksiyonunu çağıracağız ve gerekli parametreleri geçeceğiz.

Eğitim görüntüsünü, etiketi, geçiş sayısını (ters ve ileri yayılma sayısı) ve parti boyutunu (her geri / ileri yayılma için eğitim numunesi sayısı) aktarıyoruz.

Modelin performansını değerlendirmek için performans ölçüm parametrelerini de belirlememiz gerekiyor.

Bak! Kendi sinir ağınızı oluşturdunuz, bir veri setini yeniden şekillendirip kodladınız ve modelinizi eğittiniz! Python betiğini ilk kez çalıştırdığınızda, keras mnist veri setini indirecek ve eğitimi 5 kez geçecektir!

Test doğruluğunuz yaklaşık% 98 olmalıdır, bu da modelin testi çalıştırırken doğru sayıların% 98'ini tahmin ettiği anlamına gelir, bu da ilk nn için fena değildir! Uygulamada, modelinizin gereğinden fazla / yetersiz olup olmadığını anlamak için test ve eğitim sonuçlarına bakmanız gerekir.

Modelinizin genel performansını nasıl etkilediğini görmek için katman sayısını, optimize edici ve kayıp işlevinin yanı sıra geçiş sayısını ve toplu iş boyutunu ayarlamanızı öneririm!

Uzun ve heyecan verici öğrenme yolculuğunda, zor ilk adımı attınız! Lütfen başka herhangi bir açıklama veya geri bildirim için iletişime geçmekten çekinmeyin!

Okuduğunuz için teşekkürler ve meraklı kalın!

Orjinal başlık:

Keras ile İlk Sinir Ağınızı 30 Satırdan Az Kodla Yazma

Orijinal bağlantı:

https://www.kdnuggets.com/2019/10/writing-first-neural-net-less-30-lines-code-keras.html

Editör: Wang Jing

Redaksiyon: Lin Yilin

Çevirmen Profili

Chen Dan, Fudan Üniversitesi'nde, koruyucu hekimlik ve veri bilimlerinde yan dal dalında birinci sınıf öğrencisi. Veri analiziyle ilgileniyorum, ancak bu alana ilk girdiğimde hala iyileştirme için çok yer var. Umarım gelecekte, literatür okuma miktarını artırabilirim, daha ileri düzey bilgiler öğrenebilirim ve çeviri ekibindeki ilgili iş sürecinde ortak ilgi alanlarına sahip daha fazla arkadaşla tanışabilirim!

- Bitiş -

Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " THU Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.

Üzgünüm Zhao Yuanyuan: Taobao canlı yayını çok sıcak, koruyucu renginizi 270 makaleden çıkardık
önceki
Yapay zeka endüstrisinin 2019'daki durumu ve gelişme eğilimi hakkında rapor
Sonraki
6. Çin Uluslararası Sirk Festivali yarın başlıyor, Monako Krallığı Prensesi Stephanie etkinliğe katılacak
Kahraman Xiaoba Yolu'na yaklaşırken, küçük şehri keşfederken İlkbahar ve Sonbahar Xiamen'de iki klasik kırmızı film yapıldı
Hiç şarkı söylemeyen dört şarkıcı, listede JJ Lin var, dördüncüsü konserde sözlerini bile unuttu
Tangxia, kitleleri sosyal yönetim için ortak bir güç oluşturmak üzere seferber etmek için bina şefi sistemini ve sokak şefi sistemini denedi.
"Jiangxi Change" i ekolojik çekirdekle yakından izlemek
Wanlian: Kaotik pazardaki en kolay yolu bulun
@Fujian halkı not: 15 Kasım'a kadar bu tür davranışlar kesinlikle yasaktır
"At" yüz yıldan fazla bir süredir eve gitti! Beş "Zodyak İşareti" hâlâ kayıp
Bir makale sizi Wenchang'a götürecek ve tüm lezzetli yemekleri yakalayacak
Video Jieyang'daki "10 · 9" uyuşturucu kaçakçılığı davasının arkasındaki sır ortaya çıkıyor
Notları anlayın: Gree Electric neden Double Eleven'da bir "kuşatma" ile karşılaştı?
"Double Eleven" paketiniz nerede? Guizhou Post "Double 11" ile yüzleşmek için hiçbir çabadan kaçınmadı
To Top