Bir makalede TensorFlow'un 8 temel noktasını okuyun

Bir makalede TensorFlow'un 8 temel noktasını okuyun

Python gelişmiş öğretici

Makine öğrenme

Derin öğrenme

Bu makale esas olarak TensorFlow derin öğrenme çerçevesinin öğrenimini ve uygulamasını tanıtmaktadır. Deep_recommend_system projesi aracılığıyla, TensorFlow'u kullanmanın aşağıdaki 8 temel noktası tanıtılmaktadır. Bu 8 çekirdek noktaya hakim olmak, tensorflow'u verimli bir şekilde kullanmanın ilk adımıdır. Elbette, tensorflow sistemi çok büyüktür. Bunun üstesinden gelmek istiyorsanız, yine de projede çok fazla pratik yapmanız gerekir.

içindekiler:

1. TensorFlow derin öğrenme çerçevesine giriş

İki, TensorFlow hızlı başlangıç

Üç, TensorFlow sekiz temel kullanım becerisi

3.1 Eğitim verilerini hazırlayın

3.2 Komut satırı parametrelerini kabul edin

3.3 Sinir ağı modelini tanımlayın

3.4 Farklı optimizasyon algoritmaları kullanın

3.5 Çevrimiçi öğrenme ve Sürekli öğrenme

3.6 Parametreleri optimize etmek için TensorBoard'u kullanın

3.7 Dağıtılmış TensorFlow uygulaması

3.8 Bulut Makine Öğrenimi

1. TensorFlow derin öğrenme çerçevesine giriş

Google yalnızca büyük veri ve bulut bilişimde bir lider değil, aynı zamanda makine öğrenimi ve derin öğrenmede iyi uygulamalara ve birikime de sahiptir. 2015'in sonunda Google, TensorFlow dahili derin öğrenme çerçevesini açtı.

Caffe, Theano, Torch, MXNet ve diğer çerçevelerle karşılaştırıldığında TensorFlow, Github'da en fazla sayıda çatal ve yıldıza sahiptir ve grafik sınıflandırması, ses işleme, öneri sistemleri ve doğal dil işlemede zengin uygulamalara sahiptir. Son zamanlarda, popüler Keras çerçevesi alt katmanda varsayılan olarak TensorFlow kullanıyor. Ünlü Stanford CS231n kursu, öğretim ve ev ödevi için programlama dili olarak TensorFlow kullanıyor. Yurtiçi ve yurtdışındaki birçok TensorFlow kitabı hazırlandı veya satıldı. AlphaGo geliştirme ekibi Deepmind ayrıca sinir ağı uygulamalarını TensorFlow'da tüm bunlar TensorFlow'un sektördeki popülerliğini doğruluyor.

TensorFlow yalnızca kaynak kodunu Github'da açmakla kalmadı, aynı zamanda "TensorFlow: Heterojen Dağıtılmış Sistemlerde Büyük Ölçekli Makine Öğrenimi" belgesinde sistem çerçevesinin tasarımını ve uygulamasını tanıttı. Bunların arasında, 200 düğümlü ölçekli eğitim kümesi de diğer dağıtılmış derin öğrenmedir. Çerçeve tarafından eşsiz. Google ayrıca Google Play App Store algoritma modelini ve YouTube video önerisini "Öneri Sistemleri için Geniş ve Derin Öğrenme" ve "YouTube Video Öneri Sistemi" belgelerinde tanıttı ve ayrıca TensorFlow'a dayalı kod örnekleri sağladı. TensorFlow kullanan herkes ImageNet veya Kaggle yarışmalarında State of the art'a yakın iyi sonuçlar elde edebilirsiniz.

İki, TensorFlow hızlı başlangıç

TensorFlow'un popülaritesinin derin öğrenme eşiğini düşürdüğünü söylemek abartı olmaz.Python ve makine öğreniminde bir temeliniz olduğu sürece, sinir ağı modellerine başlamak ve kullanmak çok basit hale gelir. TensorFlow iki programlama dilini destekler: Python ve C ++. Çok katmanlı sinir ağı modeli ne kadar karmaşık olursa olsun, Python onu uygulamak için kullanılabilir. İşletme başka bir program kullanıyorsa endişelenmeyin, diller arası gRPC veya HTTP hizmetini kullanarak TensorFlow'u kullanarak eğitime de erişebilirsiniz. Akıllı model.

Python kullanarak TensorFlow uygulamaları nasıl yazılır? Girişten başvuruya kadar ne kadar zor?

Aşağıda, dizeleri çıkaran ve basit işlemler gerçekleştiren bir Merhaba dünya uygulaması yazdık.

Bu basit koddan TensorFlow'un kullanımının çok uygun olduğunu anlayabiliriz.Ek hizmetlere başlamadan Python standart kütüphanesi şeklinde içe aktarılır. TensorFlow ile ilk karşılaştığınızda daha kafa karıştırıcı olabilir. Bu mantık Python'da da uygulanabilir. Neden tf.constant () ve tf.Session () kullanıyorsunuz? Aslında, TensorFlow, çalıştırma modelini ve eğitimi Grafik ve Oturum aracılığıyla tanımlar.Bu, makalenin sonraki bölümünde tanıtılacak olan karmaşık modellerde ve dağıtılmış eğitimde büyük faydalara sahiptir.

Önceki Hello world uygulaması bir model eğitmedi.Sonra, bir lojistik regresyon problemi ve modeli tanıtacağım. Bir dizi doğrusal ilişki verisi oluşturmak için numpy kullanıyoruz TensorFlow tarafından uygulanan stokastik gradyan algoritması, yeterince uzun bir süre eğitimden sonra işlevin eğimini ve kesişimini otomatik olarak çözebilir.

Yukarıdaki kod tensorflow_examples projesinde bulunabilir.Eğitimden sonra, çıkış eğiminin w yaklaşık 2 olduğunu ve kesişim b'nin yaklaşık 10 olduğunu görüyoruz ki bu, oluşturduğumuz veriler arasındaki korelasyonla çok tutarlı! En küçük kareler gibi algoritmaların TensorFlow kodunda uygulanmadığını ve kod mantığını kontrol edecek başka bir şeyin olmadığını unutmayın.Tamamen veriye dayalıdır ve Loss değerini gradyan iniş algoritmasına göre dinamik olarak ayarlayarak öğrenilir. Bu şekilde, diğer veri setlerine geçsek, hatta görüntü sınıflandırma gibi diğer alanlardaki problemlere bile geçsek, makine kodu değiştirmeden otomatik olarak öğrenebilir.Bu aynı zamanda sinir ağlarının ve TensorFlow'un gücüdür.

Önceki modelin yalnızca iki değişkeni vardır, w ve b.Veri doğrusal olmayan bir ilişki içindeyse, iyi sonuçlar elde etmek zordur.Bu nedenle, TensorFlow'un ele almak için tasarlandığı derin öğrenme modeli olan derin bir sinir ağının kullanılmasını öneririz. Google'ın 2014 yılında Inception modeliyle ImageNet küresel rekabetini kazandığını biliyoruz. İçerideki kod TensorFlow'a dayanmaktadır. Aşağıda daha karmaşık model tanımlama kodu verilmiştir.

TensorFlow'un halihazırda paketlediği tam bağlantılı ağı, evrişimli sinir ağını, RNN ve LSTM'yi kullanarak, çeşitli ağ modellerini zaten birleştirebiliriz ve Inception gibi çok katmanlı bir sinir ağını uygulamak, Lego'yu bir araya getirmek kadar basit. Bununla birlikte, optimizasyon algoritmalarını seçme, TFRecords oluşturma, model dosyalarını dışa aktarma ve dağıtılmış eğitimi destekleme konusunda daha fazla ayrıntı vardır.Ardından, bir makale boyunca TensorFlow ile ilgili tüm temel kullanım becerilerini tanıtacağız.

Üç, TensorFlow sekiz temel kullanım becerisi

TensorFlow'un çeşitli kullanımlarını tanıtmak için, TFRecords, QueueRunner, Checkpoint, TensorBoard, Inference, GPU desteği, dağıtılmış eğitim ve çok katmanlı sinir ağı modelleri gibi özellikleri uygulayan deep_recommend_system açık kaynak projesini kullanacağız ve Geniş'e ulaşmak için kolayca genişletilebilir Derin gibi modeller indirilebilir ve doğrudan gerçek proje geliştirmede kullanılabilir.

3.1 Eğitim verilerini hazırlayın

Genel olarak, TensorFlow uygulama kodu, Graph tanımını ve Session'ın işleyişini içerir ve kod miktarı küçüktür ve kanser_sınıflandırıcı.py dosyası gibi bir dosyada kapsüllenebilir. Eğitimden önce, örnek verileri ve test verilerini hazırlamanız gerekir. Genellikle, veri dosyası boşluk veya virgülle ayrılmış bir CSV dosyasıdır, ancak TensorFlow, çok iş parçacıklı veri okuma için QueuRunner ve Koordinatör'ü destekleyebilen ve toplu iş boyutunu geçebilen ikili TFRecords biçiminin kullanılmasını önerir. Epoch parametresi, eğitim sırasında tek bir partinin boyutunu ve örnek dosyaların kaç tur yinelemeli eğitimini kontrol eder. CSV dosyasını doğrudan okursanız, kodda okunan bir sonraki verinin işaretçisini kaydetmeniz gerekir ve örnek belleğe yüklenemediğinde kullanmak çok zahmetlidir.

Veri dizininde proje, CSV ve TFRecords format dönüştürme aracını sağladı. Convert_cancer_to_tfrecords.py. Bu komut dosyasına başvurarak, CSV dosyalarını herhangi bir formatta ayrıştırabilir ve TensorFlow tarafından desteklenen TFRecords formatına dönüştürebilirsiniz. İster büyük veri ister küçük veri olsun, basit bir komut dosyası aracıyla doğrudan TensorFlow'a bağlanabilirsiniz.Proje ayrıca, TFRecords dosyasının içeriğini doğrudan okumak için API'yi çağırmak için print_cancer_tfrecords.py komut dosyasını da sağlar.

3.2 Komut satırı parametrelerini kabul edin

TFRecords ile sinir ağı modellerini eğitmek için kod yazabiliriz, ancak hepimizin bildiği gibi derin öğrenmenin ayarlanamayacak kadar çok Hiperparametresi var. Optimizasyon algoritmasını, model katmanlarının sayısını ve farklı modelleri ayarlamaya devam etmemiz gerekiyor. Şu anda komutu kullanın Satır parametreleri çok uygundur.

TensorFlow, alt katmanda python-gflags projesini kullanır ve ardından bunu tf.app.flags arayüzüne ekler. Kullanımı çok basit ve sezgiseldir. Gerçek projelerde, komut satırı parametreleri genellikle önceden tanımlanır, özellikle daha sonra bahsedilen Cloud Makine Öğrenimi hizmetinde. İçinde, Hiperparametrenin ayarlanması parametreler aracılığıyla basitleştirilmiştir.

3.3 Sinir ağı modelini tanımlayın

Verileri ve parametreleri hazırladıktan sonra en önemli şey ağ modelini tanımlamaktır.Model parametrelerini tanımlamak çok basit olabilir. Birden çok Değişken oluşturabilirsiniz veya daha karmaşık olabilir.Örneğin, tf.variable_scope () ve tf.get_variables ( )arayüz. Her bir Değişkenin benzersiz bir ada sahip olduğundan ve gizli katman düğümlerinin ve ağ katmanlarının sayısını kolayca değiştirebildiğinden emin olmak için, özellikle Değişkenleri tanımlarken, projedeki koda referans vermenizi öneririz. TensorFlow varsayılan olarak GPU kullanabilir. Parametre güncellemesi çok yavaş.

Yukarıdaki kod, eğitim, çıkarım uygulama veya model doğruluğunu ve auc'yi doğrulama olsun, üretim ortamında da çok yaygındır. Proje ayrıca, Google Play uygulama mağazasının öneri işinde yaygın olarak kullanılan bu koda dayalı Geniş ve derin modeli de uygulamaktadır. Bu, geleneksel lojistik regresyon modelini ve derin öğrenme sinir ağı modelini organik olarak birleştiren evrensel öneri sistemi için de uygundur. birlikte.

3.4 Farklı optimizasyon algoritmaları kullanın

Ağ modelini tanımladıktan sonra, model parametrelerini optimize etmek için hangi Optimizer'ı kullanacağımızı düşünmemiz gerekir, Sgd, Rmsprop veya Adagrad, Ftrl mi seçmeliyiz? Farklı senaryolar ve veri kümeleri için sabit bir cevap yoktur. En iyi yol alıştırma yapmaktır Yukarıda tanımlanan komut satırı parametreleri aracılığıyla modeli eğitmek için farklı optimizasyon algoritmalarını kolayca kullanabiliriz.

Üretim uygulamasında, farklı optimizasyon algoritmalarının eğitim sonuçları ve eğitim hızlarında büyük farklılıkları vardır.Aşırı optimizasyon ağ parametrelerinin diğer optimizasyon algoritmaları kadar etkili olmayabilir.Bu nedenle, doğru optimizasyon algoritmasının seçilmesi de Hyperparameter ayarlamasında önemli bir adımdır. , Bu mantığı TensorFlow koduna ekleyerek, karşılık gelen işlev de iyi bir şekilde uygulanabilir.

3.5 Çevrimiçi öğrenme ve Sürekli öğrenme

Birçok makine öğrenimi tedarikçisi, ürünlerinin çevrimiçi öğrenmeyi desteklediğini iddia edecek. Aslında, bu, çevrimiçi verilerin sürekli optimizasyon modelini desteklemek olan TensorFlow'un yalnızca temel bir işlevidir. TensorFlow, modeli kaydedebilir ve tf.train.Saver () aracılığıyla model parametrelerini geri yükleyebilir. Model dosyasını Python ile yükledikten sonra, çevrimiçi olarak istenen verileri sürekli olarak kabul edebilir. Model parametrelerini güncelledikten sonra, bir sonraki optimizasyon için Saver aracılığıyla kontrol noktası olarak kaydedin veya çevrimiçi .

Sürekli eğitim, eğitim kesintiye uğramış olsa bile, önceki eğitim sonuçlarının modeli optimize etmeye devam edebileceği anlamına gelir ve aynı zamanda TensorFlow'da Saver ve kontrol noktası dosyaları aracılığıyla uygulanır. Deep_recommend_system projesi, varsayılan olarak önceki eğitimden modeli optimize etmeye devam edebilir.Ayrıca, komut satırında train_from_scratch'i de belirtebilirsiniz.Sadece eğitim sürecini kesintiye uğratmakla kalmaz, aynı zamanda çevrimiçi hizmetler sağlamak için eğitim sırasında da çıkarım yapabilirsiniz.

3.6 Parametreleri optimize etmek için TensorBoard'u kullanın

TensorFlow ayrıca güçlü bir grafik aracı, yani TensorBoard'ı da entegre eder.Genel olarak, koda önem verdiğimiz eğitim göstergelerini eklemeniz yeterlidir ve TensorBoard bu parametrelere göre otomatik olarak çizim yapar ve model eğitim durumunu görsel bir şekilde anlayacaktır.

tf.scalar_summary ("kayıp", kayıp) tf.scalar_summary ("doğruluk", doğruluk) tf.scalar_summary ("auc", auc_op)

3.7 Dağıtılmış TensorFlow uygulaması

Son olarak, TensorFlow'un güçlü dağıtılmış hesaplama işlevlerini tanıtmalıyım.Cafffe gibi geleneksel hesaplama çerçeveleri, dağıtılmış eğitimi yerel olarak desteklemez. Veri miktarı çok büyük olduğunda, makine ekleyerek ölçeği genişletmek genellikle imkansızdır. TensorFlow, Google'ın çeşitli işletmelerinin PB düzeyindeki verilerini taşır.Tasarımın başlangıcında, dağıtılmış hesaplamanın ihtiyaçları dikkate alındı ve sinir ağı modelinin dağıtılmış hesaplaması, gRPC ve Protobuf gibi yüksek performanslı kitaplıklar aracılığıyla gerçekleştirildi.

Dağıtılmış TensorFlow uygulamalarını uygulamak zor değildir. Oluşturma Grafiği kodu bağımsız sürümle aynıdır. Dağıtılmış bir kanser_classifier.py örneği uyguladık. Aşağıdaki komutla birden çok ps ve birden çok çalışanla bir eğitim kümesi başlatabilirsiniz.

1

2

3

4

5

6

7

kanser_ sınıflandırıcısı.py --ps_hosts = 127.0.0.1: 2222,127.0.0.1: 2223 --worker_hosts = 127.0.0.1: 2224,127.0.0.1: 2225 - iş_adı = ps --task_index = 0

kanser_ sınıflandırıcı.py --ps_hosts = 127.0.0.1: 2222,127.0.0.1: 2223 --worker_hosts = 127.0.0.1: 2224,127.0.0.1: 2225 - iş_adı = ps --task_index = 1

ancer_classifier.py --ps_hosts = 127.0.0.1: 2222,127.0.0.1: 2223 --worker_hosts = 127.0.0.1: 2224,127.0.0.1: 2225 - job_name = worker --task_index = 0

ancer_classifier.py --ps_hosts = 127.0.0.1: 2222,127.0.0.1: 2223 --worker_hosts = 127.0.0.1: 2224,127.0.0.1: 2225 - job_name = worker --task_index = 1

Kodu derinlemesine okumadan önce, dağıtılmış TensorFlow'da ps, çalışan, grafik içi, grafik arası, senkronize eğitim ve asenkron eğitim kavramlarını anlamamız gerekir. İlk olarak, ps, modelin Değişkenini depolayan tüm eğitim kümesinin parametre sunucusudur ve çalışan, modelin gradyanını hesaplayan düğümdür ve elde edilen gradyan vektörü, modeli güncellemek için ps'ye teslim edilir. Grafik içi grafiğe karşılık gelir, ancak her ikisi de senkronize eğitim ve asenkron eğitim sağlayabilir. Grafik içi, tüm kümenin bir müşteri tarafından oluşturulduğu ve bu müşterinin grafiği kümeye gönderdiği ve diğer işçilerin yalnızca işlemden sorumlu olduğu anlamına gelir Gradyan hesaplama ve grafik arası görevi, bir kümedeki birden fazla çalışanın birden fazla grafik oluşturabileceği gerçeğini ifade eder, ancak işçiler aynı kodu çalıştırdığı için, oluşturulan grafikler aynıdır ve parametreler aynı eğitimi sağlamak için aynı ps'de kaydedilir. Birden çok çalışanın büyük veri senaryolarına uygun grafikler oluşturabileceği ve eğitim verilerini okuyabileceği bir model. Eşzamanlı eğitim ile eşzamansız eğitim arasındaki fark, eşzamanlı eğitimin gradyan her güncellendiğinde tüm çalışanların sonuçlarını beklemeyi engellemesi gerektiğidir, eşzamansız eğitim engellenmez ve eğitim verimliliği daha yüksektir. Eşzamansız eğitim genellikle büyük veri ve dağıtılmış senaryolarda kullanılır.

3.8 Bulut Makine Öğrenimi

TensorFlow ile ilgili tüm içeriği zaten tanıttım. Dikkatli netizenler TensorFlow'un güçlü olduğunu keşfetmiş olabilir, ancak özü hala bir kitaplıktır. TensorFlow uygulama kodunu yazmanın yanı sıra, kullanıcıların hizmeti fiziksel makinede başlatması ve eğitim verilerini ve modelini manuel olarak belirlemesi de gerekir. Dosya kataloğunun bakımı nispeten pahalıdır ve makineler arasında paylaşılamaz.

Büyük veri işleme ve kaynak planlama endüstrileri boyunca, Hadoop ekolojisi endüstri standardı haline geldi.Veriler MapReduce veya Spark arayüzleri aracılığıyla işlenir.Kullanıcılar API aracılığıyla görevleri gönderdikten sonra, Yarn birleşik kaynak tahsisi ve zamanlama gerçekleştirir, bu da yalnızca dağıtılmış hesaplamayı bir Muhtemelen, sunucuların kullanımı da kaynak paylaşımı ve birleşik zamanlama yoluyla büyük ölçüde iyileştirilmiştir. TensorFlow'un bir derin öğrenme çerçevesi olarak tanımlanması ve küme kaynak yönetimi gibi işlevleri içermemesi üzücü, ancak açık kaynak TensorFlow'un ardından Google kısa süre içinde Google Cloud ML hizmetini duyurdu. Alfa sürümünden bu yana Cloud ML'nin ilk kullanıcıları olduk. Bulut eğitimi derin öğrenmenin rahatlığı. Google Cloud ML hizmeti aracılığıyla, TensorFlow uygulama kodunu işlem için doğrudan buluta gönderebilir ve hatta eğitimli modeli doğrudan API aracılığıyla erişilebilen bulut üzerinde dağıtabiliriz. TensorFlow'un iyi tasarımı sayesinde Kubernetes'i temel alıyoruz TensorFlow hizmetiyle Cloud Makine Öğrenimi hizmetini uygular ve mimari tasarım ve kullanım arayüzü Google Cloud ML'ye benzer.

TensorFlow çok iyi bir derin öğrenme çerçevesidir. Bireysel geliştiriciler, bilimsel araştırmacılar ve kuruluşlar için yatırım yapmaya değer teknik bir yöndür. Bulut Makine Öğrenimi, kullanıcıların ortam başlatma, eğitim görevi yönetimi ve sinir ağı modellerinin çevrimiçi hizmetlerinin yönetimini ve yönetimini çözebilir. Planlama sorunları. Şu anda, Google Cloud ML otomatik olarak hiperparametre ayarlamayı zaten destekliyor ve parametre ayarlama, gelecekte teknik bir sorun olmaktan çok hesaplama sorunu haline gelecek. Bazı geliştiriciler TensorFlow yerine MXNet veya diğerlerini kullansa bile, daha derin öğrenme kullanıcıları ve platformları ile geliştirmeye hazırız İnsanlarla değişim ve topluluğun gelişimini teşvik eder.

Li Zixuan'ın tulum ve netizenler ile sonbahar kıyafetleri giydiğini görene kadar çok zayıf olduğunu düşünmüştüm: sırtı gerçekten güçlü
önceki
Ying Er çok güçlü, bir çift yırtık kottan yeterince göz küresi kazanıyor, netizenler: Sadece dışarı çıkma cesaretiniz varsa
Sonraki
Evergrande 2-1 Luneng, Taliska iki gol attı + serbest vuruş geri sayımı
Ülkenin net yetenek girişi oranında ikinci sırada yer alan Ningbo yetenekleri nasıl çekiyor?
Deng Enxi, 14 yaşındaki bir kıza çok benzemeyen, uzun pembe saçlı beyaz bir elbise giyiyor
RNN-sin sinüs dizisinin en temelli anlaşılması ve gerçekleştirilmesi
La Liga: Aspers, Girona ve Vallecanoping Huesca'yı yakalamak için Celta'yı vurdu
Kazanmak için 6 tur! Tianhai 0-0 SIPG, ikinci yarıda iki kez
Zeng Zhuangshan, gevşek bir ceket giyen ve eksik kıyafetlerin altında oynayan Wu Xuanyi'yi yendi, bacaklar Ju Jingyi'den daha ince
SIPG, SIPG ile 0-0 berabere kaldı, Mısır fırsatı kaçırdı ve Nisan ayından bu yana sadece bir galibiyet
Dünya çapında bir Çin donanması inşa etmenin beş "sorumluluğu"
Bir zamanlar Zhao Liying'in entrikacı dördüncü kız kardeşi olarak oynadı, herkesi şaşırtmak için süper şortlar giymiş, efsanevi "sosis bacağı"?
Yang Zi kilo verme konusunda ciddi mi? Düz kot etekli yatay çizgili bir tişört giymek, sütuna benziyor
Sinir ağı görselleştirme (2) - toplanan bazı yaygın ağ görselleştirme yöntemleri
To Top