Giriş Derin Öğrenme Pratik Savaş (1): Algoritmik, Prisma gibi Van Gogh tarzı portreler oluşturur

Giriş: Yapay zeka artık sıcak bir konudur ve yapay zeka, makine öğreniminden ayrılamaz. Makine öğreniminde derin öğrenme daha popüler bir yöndür. Bu makale dizisi, gerçek savaştan başlayacak ve derin öğrenme için MXnet'in nasıl kullanılacağını tanıtacak ~ Gerçek savaş olduğu için Ve bu makale bir giriş seviyesi, herkesin anlayamayacağı kadar çok matematiksel formülden bahsetmeyeceğiz ~

0x00 Derin Öğrenmeye Giriş

Bununla birlikte, derin matematiksel ilkelerden bahsetmiyoruz, ancak temel ilkelere hakim olunmalıdır ~

Derin öğrenmeyi tanıtmadan önce, iki kavramı anlamalıyız, makine öğrenimi ve sinir ağları.

Makine öğrenme:

Derin öğrenmeyi tanıtmadan önce, makine öğrenimini kısaca tanıtalım. Wikipedia'da makine öğreniminin tanımını aktaralım:

Makine öğrenimi, yapay zekanın bir dalıdır. Yapay zeka araştırması, "muhakeme" ye odaklanmadan "bilgi" ye odaklanmaya ve ardından "öğrenmeye" odaklanmaya kadar doğal ve net bir bağlama sahiptir. Açıkçası makine öğrenimi, yapay zekayı gerçekleştirmenin, yani yapay zekadaki sorunları makine öğrenimi yoluyla çözmenin bir yoludur. Makine öğrenimi, son 30 yılda olasılık teorisi, istatistik, yaklaşıklık teorisi, dışbükey analiz ve hesaplama karmaşıklığı teorisi gibi birçok konuyu içeren çok disiplinli bir disiplinlerarası hale geldi.

Makine öğrenimi teorisi temel olarak bilgisayarların otomatik olarak "öğrenmesine" izin veren bazı algoritmaları tasarlamak ve analiz etmektir. Makine öğrenimi algoritması, verileri otomatik olarak analiz eden ve verilerden kuralları alan ve bilinmeyen verileri tahmin etmek için kuralları kullanan bir tür algoritmadır. Öğrenme algoritmalarında çok sayıda istatistiksel teori bulunduğundan, makine öğrenimi özellikle istatistiksel öğrenme teorisi olarak da adlandırılan çıkarımsal istatistiklerle yakından ilgilidir. Algoritma tasarımı açısından, makine öğrenimi teorisi, ulaşılabilir ve etkili öğrenme algoritmalarına odaklanır. Çoğu çıkarım problemini takip etmek zordur, bu nedenle makine öğrenimi araştırmasının bir parçası, kullanımı kolay yaklaşık algoritmalar geliştirmektir.

Basitçe ifade etmek gerekirse, makine öğrenimi, makinenin kuralları bulmak için verileri analiz etmesine ve yeni verileri bulunan kurallar aracılığıyla işlemesine izin vermektir.

Nöral ağlar:

Nöronlar:

Örnek olarak bir görüntü alırsak, her veri veya giriş bir resimdir ve içindeki her x resimdeki her piksel olabilir. Her piksel için bir ağırlık atarız ve ardından bir değer elde etmek için bir transfer fonksiyonundan (Transfer Fonksiyonu, burada doğrusal bir süperpozisyon) geçeriz. Basitçe söylemek gerekirse, tüm piksellerin doğrusal ağırlıklı süperpozisyonunu yapıyoruz. Elde edilen değer, yeni bir değer almak için aktivasyon işlevinden geçecektir. Bu etkinleştirme işlevi genellikle belirli özellikleri karşılayan doğrusal olmayan bir işlevdir. Doğrusal olmayan dönüşüme neden ihtiyacımız var? Basit bir örnek vermek gerekirse, aynı düzlemde siz ve gölgeniz örtüşür ve ayrılamaz, ancak üç boyutlu bir uzayda ayrılabilirsiniz. Doğrusal olmayan dönüşüm benzer bir etkiye sahiptir. Yaygın olarak kullanılan aktivasyon fonksiyonları relu, softmax, tanh'dir.

Basitçe söylemek gerekirse, bir nöron basit bir sınıflandırıcıdır,

Örneğin, çok sayıda kedi ve köpek fotoğrafımız var ve her fotoğraf bir makineye gönderiliyor ve makinenin bu fotoğraftaki şeyin kedi mi yoksa köpek mi olduğunu belirlemesi gerekiyor. Kedi ve köpek resimlerini işleyelim, sol taraf köpeğin özellik vektörü ve sağ taraf kedinin

Bir düşünün, bu iki özellik vektörü kümesini ayırmanın en kolay yolu nedir? Tabii ki, iki veri setinin ortasına, solda köpek ve sağda kedi olacak şekilde dikey bir çizgi çizin ve sınıflandırıcı tamamlandı. Daha sonra yeni vektörle birlikte, çizginin soluna düşenlerin tamamı köpek, sağ tarafa düşen ise kedilerdir.

Düz bir çizgi, düzlemi ikiye böler, bir düzlem üç boyutlu alanı ikiye böler ve n-1 boyutlu bir hiper düzlem, n boyutlu uzayı ikiye böler. İki taraf iki farklı türe aittir. Bu sınıflandırıcıya sinir denir yuan.

Tabii ki yukarıdaki resimde Tanrı'nın perspektifinden sadece "dikey bir çizginin iki türü ayırabileceğini" öğrendik.Nöronları gerçekten eğittiğimizde, özelliklerin nasıl gruplandırıldığını bilmiyoruz. Nöron modelinin bir öğrenme yöntemine Hebb algoritması denir:

Önce rastgele bir doğru / düzlem / hiper düzlem seçin ve sonra örnekleri birer birer alın.Eğer doğru bölünmüşse nokta yanlış tarafa bölünmüş demektir.Düz çizgiyi örneğe biraz daha yaklaştırın ve geçmeye çalışın. Bu numuneyi geçirin ve düz çizginin sağ tarafına koşmasına izin verin; eğer düz çizgi doğruysa, geçici olarak duracaktır. Bu nedenle, nöronları eğitme süreci, bu düz çizginin sürekli dans etmesi ve sonunda iki sınıf arasındaki dikey çizgiye atlamasıdır.

Nöral ağlar:

Bir sinir ağının basit noktası, birçok nörondan oluşan bir sistem olacaktır.

Nöronun bir dezavantajı, yalnızca bıçağı kesebilmesidir! Aşağıdaki iki kategoriyi bir bıçakla nasıl ayırabileceğinizi söyleyin.

Çözüm, çok katmanlı bir sinir ağıdır ve düşük seviyeli nöronların çıktısı, daha yüksek seviyeli nöronların girdisidir. Ortada yatay olarak kesip dikey olarak kesip sonra sol üst ve sağ alt kısımları birleştirip sağ üst ve sol alt kısımları ayırabiliriz veya önce bu kısmı kazmak için sol üst köşede 10 bıçak kesip sonra Sağ alt köşeyle birleştirin.

Her kesi yapıldığında, bir nöron, bu nöronların çıkışını girdi olarak kullanmak ve ardından başka bir nöronu bağlamak için farklı yarı yarı düzlemlerde kesişme ve birleştirme işlemleri gerçekleştirmek için kullanılır. Bu örnekte, özelliğin şekli XOR olarak adlandırılır Bu durumda, bir nöron bunu kaldıramaz, ancak iki nöron katmanı onu doğru şekilde sınıflandırabilir.

Yeterince bıçak kesebildiğiniz ve sonuçları bir araya getirebildiğiniz sürece, herhangi bir garip şekilli sınır sinir ağı temsil edebilir, böylece sinir ağı teorik olarak çok karmaşık işlevleri / uzamsal dağılımları temsil edebilir. Bununla birlikte, gerçek sinir ağının doğru konuma geçip geçemeyeceği, ilk ağ değeri ayarına, örneklem boyutuna ve dağıtıma bağlıdır.

Derin öğrenme:

Peki derin öğrenme nedir? Basitçe söylemek gerekirse, derin öğrenme, çok sayıda katmana sahip çok katmanlı bir sinir ağının eğitilmesine ve çalıştırılmasına izin vermek için gelişen bir dizi yeni yapı ve yeni yöntemdir.

Aşağıdaki resim gibi

Sıradan bir sinir ağının yalnızca birkaç katmanı olabilir ve derin öğrenme bir düzineden fazla katmana ulaşabilir. Derin öğrenmedeki derinlik kelimesi aynı zamanda sinir ağlarının katmanlarının sayısını da temsil eder. Popüler derin öğrenme ağ yapıları arasında "CNN (Evrişimli Sinir Ağı), RNN (Dairesel Sinir Ağı), DNN (Derin Sinir Ağı), vb." Bulunmaktadır.

Tabii ki, gerçek savaşa dayanıyoruz ve piyasadaki mevcut derin öğrenme çerçevelerinden bazılarını doğrudan kullanabiliriz. Popüler derin öğrenme çerçeveleri MXnet, tensorflow, caffe vb. Bu makale esas olarak mükemmel bir açık kaynak derin öğrenme çerçevesi olan MXnet'i tanıtır.

0x01 MXnet'i yükle

Burada MXnet'in CPU versiyonunu kuruyoruz, neden GPU versiyonunu kurmuyoruz? Macbook'um bir AMD kartı olduğu için, MXnet yalnızca CUDA'yı destekliyor

1. Kaynak kodunu indirin

Yeni bir dizin oluşturun ve bu dizinde çalıştırın

git clone --recursive https://github.com/dmlc/mxnet

2. Derleyin ve kurun

Setup-utils dizininde install-mxnet-osx.sh komut dosyasını çalıştırın.Bazı şeylerin ortada derlenmesi gerekir.Bir süre beklemeniz ve ardından bir parola girmeniz gerekir ve otomatik derleme ve kurulum tamamlanır.

çok dikkat:

1. make dizinindeki dosyaları okumak istediğiniz için, burada MXnet kaynak kodunun kök dizinindeki kurulum komut dosyasını çalıştırmanız gerekir ~

Örneğin, mxnet'in kaynak kök dizininde çalıştırın.

sh ./setup-utils/install-mxnet-osx.sh

2. Betiği ileride çalıştırmak için bazı python modüllerine ihtiyaç duyulabilir, pip kurmanız önerilir.

Mac altındaki kurulum yöntemi de çok basit: sudo easy_install pip

0x02 örnek çalıştırma

MXnet ile gelen bazı örnekleri çalıştırmayı deneyebiliriz, burada Sinir sanatı örneğini deneyeceğiz

Sinir sanatı, bir makinenin bir fotoğrafı yeniden boyamak için mevcut bir resmin boyama stilini taklit etmesini sağlayan bir algoritmadır.

Örneğin, giriyoruz

ile

Son nesil

1. Önce örnek / sinir stili dizini açın, örneklerin çoğunda BENİOKU var, çalıştırmadan önce bir göz atabilirsiniz

Bu örneğin README yazıyor

Önceden eğitilmiş modeli ve örnek girdileri indirmek için ilk olarak download.sh kullanın

Sonra python nstyle.py komutunu çalıştırın, daha fazla seçenek görmek için-h kullanın

O halde bu dizinde download.sh çalıştırmalıyız.

Komut dosyası, eğitim modeli vgg19.params'ı Model dizinine ve girdi materyalini de girdi dizinine otomatik olarak indirecektir.

2. Demoyu Çalıştır

CPU sürümünü çalıştırdığımız için bu şekilde girmeliyiz

python nstyle.py --gpu -1 --max-num-epochs 150 --output_dir ~ / Masaüstü /

--gpu: Hangi GPU kullanılacak, -1, CPU kullanmak anlamına gelir

--max-num-epochs: maksimum yineleme sayısı, burada 150 kez yineleme yapıyoruz

--output_dir: sonuç çıktı yolu

Bir kez çalıştırmanız mümkün olmayabilir ve xxx için adlandırılmış modül yok uyarısı görünecektir. Genel olarak, ilgili python modülü kurulmaz. Kurulum yöntemini genellikle google'da xxx için adlandırılmış modül yok altında bulabilirsiniz, çoğu pip ~ aracılığıyla kurulabilir

operasyon sonucu

Farklı yinelemelerin sonuçlarına bir göz atalım

10 kere:

50 kere:

100 kere:

150 kez:

Görüldüğü gibi, ne kadar çok yineleme, etki o kadar iyi.Elbette, derin öğrenme birçok sinir ağı katmanından oluştuğu için, gereken hesaplama miktarı çok büyük. CPU i7 olsa bile, 150 yineleme onlarca dakika sürecektir. Yetkililer, süreyi birkaç dakikaya indirebilen veya hatta bulut platformunda çalıştırabilen GPU sürümünü kullanmayı deneyebilir.

Numunenin özel ilkesi, ekteki ikinci bağlantıya başvurabilir.

Referans ek:

https://zhuanlan.zhihu.com/p/20634163

18 yaşında "Hadi İyi Çocuk" unvanını kazandı.Kısa bir palto ve ince pantolon giyen, bir ergen gibi zarif görünüyor.
önceki
Chen Duling, sarıya çok uygun ve saçları tulumun içinde mantarın etrafına hafifçe kıvrılmış. 18 yaşının çok fazla olduğunu söyledi.
Sonraki
Ligue 1: Marsilya, Montpellier Niem katkılarda bulundu, Nice Caen'e kaybetti
Yamy büyük sırtını tarıyor ve siyah ruj sürüyor, aurası süper güçlü, mavi uzun pantolon ve sandaletler daha da dikkat çekici.
Oyun Metninde Anahtar Kelime Çıkarma Girişimi ve Keşfi
Çatışma sahnesinin yanından geçip aniden kırmızıya boyanan Yatai gerilimi: şaşkınlık dolu bir bakış
Wang Sicongun söylentilere konu kız arkadaşı. Uzun kollu "Küçük Bel" gösterisi giyiyor. Netizenler seslendi: çok zayıf
Yeni teknoloji sanatsal yaratıma yeni boyutlar katıyor. Yang Liping: "The Rite of Spring" in 5G + VR canlı yayınının etkisi çok şok edici
Makine öğrenmiyor: derin öğrenmeye dayalı video etiketi çıkarma algoritması
"Neden Sheng Xiaomo" ile tanınan, eklenmiş bir ceket ve spor pantolonu giyen, aynaya ilk aşk gibi gülümsüyor
Premier Lig toplantısı: Alman çift halkalı Hornetler zafer kazanıyor, iblis cephesi bir başlık takıyor ve azizi ele geçiriyor
Song Zuer'in özel kıyafetleri çok güzel, ceket ve kotları genç ve ayakkabılar 5 cm boyunda
Hafta sonu python kaynakları ve PDF e-kitapları büyüktür, daha eksiksiz olamaz
Ruby Ruby tatil fotoğrafları çekti, ancak Huo Jianhua'yı görmedi. Lavaboda otururken öfkeyle övüldü: iyi ayakkabılara sahip bir kız
To Top