TensorFlow kısa öğretici

Pratik eğiticiler aracılığıyla Google'ın açık kaynak makine öğrenimi kitaplığının güçlü işlevlerini deneyimleyin.

Makine öğrenimi artık sıcak olamaz.Nöral ağlarla ilgilenen deneyimli veri bilimcileri ve acemiler için çeşitli ağır platformlar vardır. TensorFlow bunlardan biridir. TensorFlow, Google tarafından bir yıl önce açık olan bir makine öğrenimi kitaplığıdır.

Bu makalede, size TensorFlow'un temellerini tanıtacağım ve görüntü sınıflandırma alanındaki birkaç TensorFlow modelini açıklayacağım. Ardından, sizi TensorFlow'u öğrenmek ve kullanmak için diğer kaynaklara yönlendireceğim.

ön koşullar

Ne hakkında konuşacağımı tam olarak anlamak için bazı ön koşullara ihtiyacınız var. Öncelikle Python kodunu okuyabilmelisiniz. Nasıl yapılacağını bilmiyorsanız, Mark Lutzun "Python Öğrenme" kitabı mükemmeldir; çevrimiçi olarak daha hızlı ve ücretsiz bir giriş için lütfen Yeni Başlayanlar için Python'u veya Python Öğrenmeyi deneyin.

İkinci olarak, matematik ve temel istatistik hakkında bir şeyler bilmelisiniz. Çoğu programcı bu şeyleri kolejde ve hatta lisede öğrenecek, ancak kullanacağım herhangi bir kavramda yeniyseniz, İnternette Yeni Başlayanlar için Matematik ve Kullanılabilir İstatistikler gibi birçok kaynak var.

Gradyan tabanlı optimizasyon yöntemlerini anlıyorsanız, bu da yardımcı olacaktır. Bunu yapmazsanız, optimize ediciyi kara kutu olarak kullanabilirsiniz. .

Hızlı giriş: makine öğrenimi, sinir ağları ve derin öğrenme

Geleneksel programlamada, bilgisayara veri koşullarına yanıt olarak çeşitli program dalları da dahil olmak üzere girdi verilerini nasıl işleyeceğini açıkça anlatırız. Öte yandan, makine öğrenmesinde, bilgisayara bazı verileri, veri modellerini, model koşullarının ağırlıklarını ve sapmalarını veriyoruz, model "kayıp" veya "maliyet" işlevini tanımlıyoruz ve optimizasyon algoritmaları ağırlıkları ve sapmaları ayarlayarak modeli "eğitiyor". Minimum kaybı bulmak için.

Bilgisayar ilk verilerle ilgili eğitimden en iyi modeli bulduğunda, yeni verilerin değerini tahmin etmek için bu modeli kullanabiliriz. Veriler zamanla değişirse, verilerin doğruluğunu sağlamak için modeli düzenli olarak yeniden eğitmemiz gerekebilir.

İlk verileri genellikle iki veya üç gruba ayırırız: eğitim verileri, test verileri ve isteğe bağlı doğrulama verileri. Veriler sürekli olabilir (gerçek sayılar), bu durumda tepkiyi tahmin etmek için regresyon problemini çözeceğiz veya ayrık (tamsayı veya sınıf etiketleri) olabilir, bu durumda sınıflandırma problemini çözeceğiz.

Yapay sinir ağı, makine öğrenimini gerçekleştirmenin birçok yolundan biridir.Genellikle bir giriş katmanı, bir çıktı katmanı ve aralarında bir veya daha fazla gizli katmandan oluşan birbirine bağlı düğümlerden oluşan bir modeldir. Şimdi, her düğüm genellikle "S-şekilli" bir nörondur, yani aktivasyon işlevi, eski "algılayıcı" nın ikili adım fonksiyonundan daha iyi olan "S" şeklindeki eğrinin 0 ile 1'i arasında sorunsuz bir şekilde değişir. Daha kararlı bir davranış sağlar.

Yapay bir sinir ağında genellikle bir giriş katmanı, bir çıktı katmanı ve aralarında bir veya daha fazla gizli katman bulunur.

Derin öğrenmenin özü, çok sayıda gizli katmana, yani derin sinir ağına sahip bir sinir ağıdır. Pek çok derin ağ türü vardır, en yaygın kullanılanı görüntü tanıma için çok etkili olan derin evrişimli ağlardır. TensorFlow'u keşfederken, bunu ve konuşma tanıma için çok uygun olan tekrarlayan sinir ağları (RNN) gibi diğer türdeki derin sinir ağlarını okuyacaksınız. Derin sinir ağlarının kaybını en aza indirmenin birçok yolu vardır ve bazı örnekleri denerken bunlardan birkaçını tartışacağız.

Michael Nielsen'in bu konuyla ilgili ücretsiz e-kitabından sinir ağları ve derin öğrenme hakkında daha fazla giriş bilgisi edinebilirsiniz. Ian Goodfellow, Yoshua Bengio ve Aaron Courville tarafından derin öğrenme daha teknik bir genel bakış sağlar.

TensorFlow Playground, sinir ağlarını kullanma hissini elde etmenize yardımcı olabilir.

Oyun alanı, tahmin modelinin niteliklerini oluşturmak için kendi özellik seçim seçeneklerinizi kullanarak dört sınıflandırma problemini ve bir regresyon problemini çözmeye çalışmanıza olanak tanır; modelinizin çıktısını tanımlayan nöron aktivasyon fonksiyonları; ve her katmandaki gizli katmanların sayısı ve sayısı Ağınızın ne kadar derin olması gerektiğini belirleyen nöron sayısı. Ayrıca, her bir yineleme için eğitim verilerinin toplu boyutunu, eğitimin test verilerine oranını, eğitim modelinin öğrenme oranını, düzenleme türünü ve düzenleme oranını da ayarlayabilirsiniz. Çeşitli stratejiler deneyin ve her problem için kaybı alıp alamayacağınızı, her problemin yakınsamasının ne kadar sürdüğünü görün.

Playground'dan bir sinir ağı hissini aldığınızı düşündüğünüzde (TensorFlow deposunda bulunsa bile, aslında TensorFlow'a dayanmamaktadır), GitHub'dan TensorFlow kaynak kodunu kontrol etmenin zamanı gelmiştir.

TensorFlow GitHub deposundan TensorFlow'a göz atabilirsiniz.

Bu GitHub sayfasının altındaki README.md dosyası iyi bir genel bakışa ve faydalı bağlantılara sahiptir.

GitHub Desktop ile klonlamayı seviyorum, ancak herhangi bir Git istemcisi çalışacak, başka yöntemler de kullanılabilir:

TensorFlow'u kendi makinenizde kullanmaya başlamak için TensorFlow'u klonlayın.

TensorFlow, daha büyük ölçekte derin öğrenme için makine öğrenimini, sinir ağlarını ve veri akış grafiklerini destekler. Bu grafikler, modelin hesaplama ağını Oyun Alanından daha karmaşık ancak esnek, çok yönlü ve verimli bir şekilde açıklar. TensorFlow çözümünün kodu önce verileri yükler ve grafiği oluşturur, ardından bir oturum oluşturur ve verilere dayalı olarak modelin eğitimini çalıştırır.

Programlama düzenleyicide TensorFlow deposunu açtığınızda veya koda GitHub'da göz attığınızda görebileceğiniz gibi, TensorFlow'un çekirdeği isteğe bağlı GPU desteğiyle C ++ 'da uygulanır. JIT TensorFlow hesaplamalarının alt grafiklerini (veri akış grafikleri) derlemek için alana özgü bir doğrusal cebir (XLA) derleyicisi kullanır. Google Tensor Processing Unit'i (TPU) destekleyen XLA sürümü şu anda açık kaynak değil, özel kod oluşturma kullanıyor; açık kaynaklı CPU ve GPU arka uçları şu anda LLVM kullanıyor.

TensorFlow'un daha yüksek katmanları ve ana TensorFlow API'si Python'da uygulanır. Bir C ++ API olmasına rağmen, yalnızca Python API desteğinin bir alt kümesini uygular.

TensorFlow README.md dosyası güvenilir bir genel bakış ve faydalı bağlantılar sağlar.

TensorFlow havuzuna göz atarken, örnekler dizinine özellikle dikkat edin. Belirli bir TensorFlow uygulamasını anlamak için örneğe döneceğiz.

TensorFlow'u yükleyin

TensorFlow'u yerel olarak kurabilir veya bulutu kullanabilirsiniz. TensorFlow'u kullanmanın belki de en güçlü yolu, bulut bilgisayar öğrenimi, bulut veri akışı, bilgi işlem motoru, bulut günlük kaydı, bulut depolama, bulut depolama JSON ve BigQuery API'yi etkinleştiren bir Google Cloud Platform projesi oluşturmak ve ardından bir ortam oluşturmaktır ( Cloud Mac), Docker container (Mac OS, Linux veya Windows) veya yerelde Cloud ML (Mac OS veya Linux).

Ancak başlamak için önce TensorFlow'u yerel olarak yüklemeniz gerektiğini düşünüyorum. Mac OS veya Linux kullanıyorsanız pip kurulumunu kullanmanızı tavsiye ederim; Windows için Docker görüntülerinden biri yerel kurulum için kullanılmalıdır. Bir modeli eğitmek için bir Docker görüntüsü kullanırken, bilgisayarın RAM'ının ve çekirdeklerinin çoğu Docker'a tahsis edilmeli ve tamamlandığında kaynakları serbest bırakmak için Docker kapatılmalıdır.

Yükleme işlemi sırasında CPU veya GPU sürümünü seçebilirsiniz. Nvidia yongalarına sahip makinelerde, GPU sürümü çok daha hızlı çalışır, ancak doğru şekilde kurmak çok daha zordur; Önce CPU'ya özel bir ikili dosya kurmanızı tavsiye ederim.

Pip kurulum adımları sırasında, eski sürümü kaldırmak için izin hatalarıyla karşılaşabilirsiniz:

$ sudo pip kurulum-yükseltme $ TF_BINARY_URL

Böyle bir durumda, kurulu sürümü yok saymak için bir anahtar ekleyin:

$ sudo pip install -upgrade -ignore-kurulu $ TF_BINARY_URL

Sonraki adım, kurulumu doğrulamaktır. Python kodunun satır satır kopyalanmasını öneririm; bir sorun varsa, bu büyük olasılıkla Python tensorflow'u içe aktarmaya çalıştığında gerçekleşir:

> > > tensorflow'u tf olarak içe aktar

Python oturumunuzu bitirdiğinizde, exit () sizi kabuğa geri getirecektir.

Kurulumu tam olarak test etmek istiyorsanız, standart MNIST veri kümesinden el yazısı rakamları tanımak için orta derecede basit bir evrişimli sinir ağı modelini eğitmek yaklaşık yarım saat sürecek olan convolutional.py demo programını TensorFlow havuzunda çalıştırın. :

$ python -m tensorflow.models.image.mnist.convolutional

Bu, bilgisayar hayranınızı hızlandırmak için bir eğitim olsa da, ne olduğu hakkında daha fazla bilgi edinmek isteyebilirsiniz. TensorFlow mimarisini destekleyen bir veri akış grafiği ile başlayalım.

Veri akış şemasını anlama

Veri akış grafiği, düğümleri ve kenarları olan yönlendirilmiş bir grafiktir ve düğümler tek yönde akar.

Veri akış grafiği, matematiksel hesaplamaları açıklayan yönlendirilmiş bir grafiktir. Yönlendirilmiş grafiklere aşina değilseniz, o zaman gerçekten bilmeniz gereken şey, bunların düğümleri ve kenarları olan grafikler olmaları ve kenarların bir düğümden diğerine bir yönde (yönlendirilmiş) akmasıdır.

Veri akışı şemasında, düğümler matematiksel işlemlerin uç noktalarını veya giriş verilerini, itme sonuçlarını veya kalıcı değişkenleri oku / yaz. Kenar, düğümler arasındaki girdi / çıktı ilişkisini temsil eder ve tensör olarak da adlandırılan dinamik boyutlu çok boyutlu bir veri dizisi taşır.

TensorFlow'da (kenar tensorflow'dan sonra adlandırılır), her düğüm bir bilgi işlem cihazına atanabilir ve tüm tensörlerin giriş kenarlarındaki tensörler kullanılabilir hale geldiğinde, düğümler eşzamansız olarak paralel olarak çalışır. Daha önce bahsettiğim gibi, TensorFlow modeli verileri yükler, bir veri akış grafiği oluşturur, bir oturum oluşturur ve oturumda eğitim çalıştırır. Oturum, veri akış grafiğinden kod oluşturmak için tam zamanında derleyiciyi (XLA) çağırır.

Yukarıdaki şekilde gösterildiği gibi, nöral ağırlık W ve ofset b birden fazla pozisyonda görünür: düzeltilmiş lineer birimlerin sayısı (ReLu) ve logit olasılık (Logit) nöronları girdi olarak kullanılır ve stokastik gradyan iniş (SGD) eğitim katmanı girdi olarak kullanılır. Çıktı. Bu döngüseldir, bu nedenle ağın yinelemeli olarak çözülmesi gerekir. Softmax ve Cross entropy düğümleri kaybı hesaplar ve Gradients düğümü, SGD eğiticisini beslemek için ağırlığa ve ofsete göre kaybın kısmi türevini otomatik olarak hesaplar.

Daha net hale getirmek için Python'da belirli bir örneğe bakalım.

TensorFlow'u nasıl kullanacağınızı öğrenin

Yeni başlayanlar için TensorFlow yazarı tarafından sağlanan eğitim, MNIST el yazısıyla yazılmış rakamlar veri kümesindeki çok basit bir Softmax regresyon sınıflandırıcısına yavaş tempolu bir giriş niteliğindedir. TensorFlow kurulumunu doğrulamak için daha önce çalıştırdığımız evrişim modeliyle karşılaştırıldığında, sayıları sınıflandırmak farklı veya daha da kötü bir yoldur. Ancak anlaşılması çok daha kolay.

Açıklamamı okumanızı ve ardından resmi öğreticiyi okurken modeli kendiniz çalıştırmanızı öneririm. Tartıştığımız Python programı, TensorFlow deposundaki tensorflow / samples / tutorials / mnist / mnist_softmax.py içinde yer almaktadır.

İlk birkaç adımı güvenle atlayabilirsiniz. Sonraki adımda veri okuma kodu içe aktarma işlemi:

Bu aslında birkaç başka program dosyasını içerir, biz onu çağırdığımızda resmi MNIST eğitimini indirecek, görüntü verilerini test edecek ve doğrulayacaktır. Bu eğitim, verileri ayrıntılı olarak açıklamaktadır.

Sonraki kod, tensorflow kitaplık modülünü içe aktarır, ona bir tf adı verir ve tüm bayrakları temizler. Kullanmadan önce her zaman tensorflow'u içe aktarmanız gerekir.

Şimdi çalıştırılabilir koda bakıyoruz. İlk olarak, 28. satırda içe aktardığımız kodu kullanarak verileri okuyoruz:

Bu birkaç saniye sürecek ve ardından çıktı: ""

Train-images-idx3-ubyte.gz 9912422 bayt başarıyla indirildi.

/Tmp/data/train-images-idx3-ubyte.gz ayıklanıyor

Train-labels-idx1-ubyte.gz 28881 bayt başarıyla indirildi.

/Tmp/data/train-labels-idx1-ubyte.gz çıkartılıyor

T10k-images-idx3-ubyte.gz 1648877 bayt başarıyla indirildi.

/Tmp/data/t10k-images-idx3-ubyte.gz ayıklanıyor

T10k-labels-idx1-ubyte.gz 4542 bayt başarıyla indirildi.

/Tmp/data/t10k-labels-idx1-ubyte.gz çıkartılıyor

Artık verileri yüklediğimize göre, TensorFlow değişkenleri, yer tutucular ve işlevleri kullanarak bir model oluşturuyoruz. Bu, y = Wx + b matris denkleminden başka bir şey değildir, artı tensörü kaydetmek için bazı ayarlar (784 görüntünün piksellerini tutmak için 28'e 28'dir; 10 kategori sayısıdır, 0-9 arası sayılardır).

Ardından, bir kayıp işlevi tanımlarız - modelin "uyumun iyiliğini" veya "uyumun kötülüğünü" tanımlar ve eğitim için optimize ediciyi seçeriz.

Kodda ve yorumlarda görebileceğiniz gibi, kayıp işlevi, Softmax (normalleştirilmiş üs) işlevinin ortalama çapraz entropisine dayanır ve eğitim yöntemi, çapraz entropi kaybı işlevini en aza indirmek için gradyan düşüştür.

Son olarak, gerçekten bir TensorFlow oturumu yürütmeye hazırız. Eğitimin bir döngü içinde gruplar halinde gerçekleştirildiğini fark edeceksiniz.

Artık eğitim tamamlandığına göre (sadece bir saniye sürüyor), modeli test etmemiz ve doğruluğunu hesaplamamız gerekiyor:

Elde ettiğim doğruluk çıktısı 0.9109'du ve bu% 91, ki bu MNIST sınıflandırıcı kadar iyi değil. Ancak buradaki önemli nokta adımları anlamaktır.

Şimdi deneyebilirsiniz: Terminalde, TensorFlow deposunda tensorflow / samples / tutorials / mnist / adresine gidin ve

$ python mnist_softmax.py

Şimdi gidin ve daha ayrıntılı olacak olan öğreticinin tamamını okuyun. Depodaki Python kodundan biraz daha basit bir çapraz entropi kaybı işlevi kullandığını ve yukarıdaki kodun neden parantez içinde gerekli olduğunu açıkladığını unutmayın. Geri döndüğünde burada olacağım.

Modeli TensorBoard'da görselleştirin

TensorBoard, TensorFlow grafiklerini ve çizim ölçümlerini ve diğer yararlı görevleri görüntülemek için kullanılan bir dizi görselleştirme aracıdır. TensorBoard'u kullanmadan önce, oluşturulan veri dosyasını TensorFlow'dan çalıştırmanız gerekir.

Az önce kullandığımız tensorflow / samples / tutorials / mnist / klasöründe başka bir MNIST sınıflandırma programı mnist_with_summaries.py bulacaksınız. Kodu dikkatlice okursanız, sizin için yeni olabilecek tanıdık kodu ve kodu bulacaksınız.Örneğin, TensorBoard'da ne göreceğimizi netleştirmek için tf.name_scope'u ve variable_summaries işlevini kullanın:

Yorumların söylediği gibi, bu birçok tensörün bir özetidir. Mnist_with_summaries.py'yi dikkatlice okursanız, değişken_sözler (var, ad) ve diğer özel tf çağrılarını içeren birçok tf.name_scope (name) cümlesi göreceksiniz. < x > _summary işlevi, yukarıda gösterilen işlev gibi.

Modele ve optimize ediciye dikkat edin. Kodu dikkatlice okursanız, bazı ReLu nöronları ve uyarlanabilir bir moment tahmini (Adam, gradyan inişin bir varyantı) optimize edicisi göreceksiniz. Ayrıca, mnist_softmax eğitiminde bulduğumuz çapraz entropi tanımının aynısını da göreceksiniz.

Devam edin ve modeli çalıştırın:

$ python mnist_with_summaries.py

Bu bir dakikadan az sürer. Çalıştırdığımda, son birkaç satır çıktı:

Adım 950'de doğruluk: 0.9664

Adım 960'da doğruluk: 0.9669

Adım 970'de doğruluk: 0,9671

Adım 980'de doğruluk: 0.9671

Adım 990'da doğruluk: 0,9663

999 için çalıştırma meta verileri ekleme

Şimdi TensorBoard'u deneyebilir ve modelin günlükleri kaydettiği klasörü belirleyebiliriz:

$ tensorboard logdir = / tmp / mnist_logs /

6006 numaralı bağlantı noktasında TensorBoard 23 başlatılıyor

(Http://0.0.0.0:6006 adresine gidebilirsiniz)

Tarayıcınızda URL'yi açtığınızda, terminal penceresinde çok sayıda web sunucusu günlük kaydı göreceksiniz. Sadece birkaç fare tıklamasıyla, olay bölmesinde yakınsama grafiğini görebilirsiniz:

Birkaç tıklamayla, grafiği görüntüleyebilir ve ilgilendiğiniz kısmı yakınlaştırabilirsiniz:

Ek kaynaklar

Öğrenmeye değer daha fazla materyal var, örneğin, MNIST başlangıç eğitiminin bir parçası olarak Softmax modeliyle birlikte MNIST verilerini tartışmak. Sonraki "uzman" öğreticisi yine aynı materyalin bazılarını daha hızlı ele alıyor ve ardından sonucu% 99,2 doğrulukla iyileştirmek için çok katmanlı evrişimli bir sinir ağını nasıl oluşturacağınızı gösteriyor. TensorFlow Mechanics 101 öğreticisi daha ayrıntılıdır ve yine de MNIST verilerini kullanır. MNIST kaynağına gitmek isterseniz, Courant Enstitüsü'nden Yann LeCun tarafından sağlanan sayfada yaşıyor. MNIST verilerini sınıflandırmak için kullanılan teknikleri keşfetmek istiyorsanız, Chris Olah'ın bir görselleştirme sayfası vardır.

MNIST, görsel sınıflandırma araştırması için kullanılan, 70.000 Siyah-Beyaz 28-28 el yazısı 0-9 görüntüde kullanılan daha basit karşılaştırma veri kümelerinden biridir. Başka bir görüntü seti olan CIFAR-10, 60.000 RGB 32 × 32 piksel görüntüyü 10 kategoride sınıflandırmak ve böylece görüntü işleme teknolojisini karşılaştırmak için kullanılır. Evrişimli Sinir Ağı öğreticisi, CIFAR-10 görüntülerini sınıflandırmak için nasıl küçük bir CNN oluşturacağınızı gösterir. Bu modeli denemek istiyorsanız en azından bir GPU'ya ihtiyacınız var, bu da eğitim süresini birkaç saate kadar kısaltacak. Birden fazla GPU'nuz varsa, modeli değiştirmek için bunları kullanabilirsiniz.

Görüntü işlemeye ek olarak, kelime gömme, tekrarlayan sinir ağı (RNN), sıra-dizi modeli ve SyntaxNet kullanarak doğal dil işleme hakkında bilgi edinmek isteyebilirsiniz. Ayrıca TensorFlow'un gelişmiş makine öğrenimi API'si olan tf.contrib.learn'ı da deneyebilirsiniz. Son olarak, Google Research Blog'daki TensorFlow Model Zoo ve TensorFlow makaleleri, modeliniz için başlangıç noktası olarak kullanılmalıdır.

Orijinal bağlantı:

https://www.infoworld.com/article/3138908/art artificial-intelligence/get-started-with-tensorflow.html

Royce Sancho, Goetze'yi iki asistle attı, Dortmund ilk yarı şampiyonluğunu 2-1 kazandı.
önceki
Wuhan, 2019'da vatandaşlar için daha pratik şeyler yapacak ve delegeler beklentiler ve övgülerle dolu
Sonraki
İki Oturum Koleksiyonu Şehir Halk Kongresi temsilcileri, belediye hükümetinin çalışma raporunu dikkatle dinledi
Destansı intikam! Ekspres hırsızı cezalandırmak için mühendis, intikam kutusu yapmak için flaş tozu ve osuruk spreyi kullandı.
Paylaşılan güç bankası endüstrisi duman içinde: Chen Ou tarafından yatırım yapılan şirket, patent ihlali çağrısına dava açtı
Sahilde yıkanan 2 metrelik dev ton balığı insanlardan daha çekici
Quanergy zorluklarla karşılaşıyor: Otonom araç işinin gelişimi beklendiği gibi değil
Hükümet Çalışma Raporu 2019'da aşağıdaki sekiz konuya odaklanın
Sichuan'da Keşif | "Bermuda Karada" Wawu Dağı Ecstasy'ye Seferini Geçmek (Bölüm 2)
Shuangliu Batı Havaalanı arsasının taban fiyatı 8,630 yuan / ! Qingbaijiang'da 4.000 yuan / rezerv fiyatından işlem
Facebook, "AI sistemi kendi başına iletişim kurmak için dili icat ettiği" için AI sistemini kapatıyor
Binzhou'daki "Halk Gümrükleri", 2.000'den fazla insan yeni umutlara nüfuz ediyor
Veri anormallikleri mi yoksa tüm fiziksel dünyayı mı yıkıyor? Hintli bilim adamları, oda sıcaklığında süper iletkenlikte büyük başarılar elde ettiler
Belediye Halk Kongresi temsilcileri, belediye yönetiminin çalışma raporunu dikkatle dinledi
To Top