TensorFlow nedir? Nasıl çalışır? Giriş & Mimari

İçindekiler:

Anonim

Bu eğiticiye TensorFlow girişiyle başlayalım:

TensorFlow nedir?

TensorFlow , Makine Öğrenimi uygulamaları oluşturmak için açık kaynaklı, uçtan uca bir platformdur. Derin sinir ağlarının eğitimi ve çıkarımına odaklanan çeşitli görevleri gerçekleştirmek için veri akışını ve farklılaştırılabilir programlamayı kullanan sembolik bir matematik kitaplığıdır. Geliştiricilerin çeşitli araçları, kitaplıkları ve topluluk kaynaklarını kullanarak makine öğrenimi uygulamaları oluşturmasına olanak tanır.

Şu anda dünyanın en ünlü derin öğrenme kitaplığı Google'ın TensorFlow'udur. Google ürünü, arama motorunu, çeviriyi, resim altyazısını veya önerileri iyileştirmek için tüm ürünlerinde makine öğrenimini kullanır.

Somut bir örnek vermek gerekirse, Google kullanıcıları AI ile daha hızlı ve daha hassas bir arama deneyimi yaşayabilir. Kullanıcı arama çubuğuna bir anahtar kelime yazarsa, Google sonraki kelimenin ne olabileceği konusunda bir öneri sağlar.

Google, kullanıcılara en iyi deneyimi sunmak için devasa veri kümelerinden yararlanmak için makine öğrenimini kullanmak istiyor. Üç farklı grup makine öğrenimini kullanır:

  • Araştırmacılar
  • Veri bilimciler
  • Programcılar.

Hepsi birbirleriyle işbirliği yapmak ve verimliliklerini artırmak için aynı araç setini kullanabilirler.

Google sadece herhangi bir veriye sahip değildir; dünyanın en büyük bilgisayarına sahipler, bu nedenle Tensor Flow ölçeklenmek için tasarlandı. TensorFlow, makine öğrenimini ve derin sinir ağı araştırmalarını hızlandırmak için Google Brain Ekibi tarafından geliştirilmiş bir kitaplıktır.

Birden çok CPU veya GPU ve hatta mobil işletim sistemlerinde çalışacak şekilde oluşturulmuştur ve Python, C ++ veya Java gibi çeşitli dillerde birkaç sarmalayıcıya sahiptir.

Bu TensorFlow eğitiminde öğreneceksiniz

  • TensorFlow nedir?
  • TensorFlow'un Tarihçesi
  • TensorFlow Nasıl Çalışır?
  • TensorFlow Mimarisi
  • Tensorflow nerede koşabilir?
  • TensorFlow Bileşenlerine Giriş
  • TensorFlow neden popüler?
  • TensorFlow tarafından desteklenen Öne Çıkan Algoritmaların Listesi
  • Basit TensorFlow Örneği
  • Verileri TensorFlow'a Yükleme Seçenekleri
  • Tensorflow ardışık düzeni oluşturun

TensorFlow'un Tarihçesi

Birkaç yıl önce, derin öğrenme, büyük miktarda veri verirken diğer tüm makine öğrenimi algoritmalarından daha iyi performans göstermeye başladı. Google, hizmetlerini iyileştirmek için şu derin sinir ağlarını kullanabileceğini gördü:

  • Gmail
  • Fotoğraf
  • Google arama motoru

Araştırmacıların ve geliştiricilerin bir AI modeli üzerinde birlikte çalışmasına izin vermek için Tensorflow adında bir çerçeve oluştururlar . Geliştirildikten ve ölçeklendikten sonra, birçok kişinin kullanmasına izin verir.

İlk olarak 2015'in sonlarında, ilk kararlı sürüm ise 2017'de yayınlandı. Apache Açık Kaynak lisansı altında açık kaynak kodludur. Google'a hiçbir şey ödemeden onu kullanabilir, değiştirebilir ve değiştirilmiş sürümü bir ücret karşılığında yeniden dağıtabilirsiniz.

Bu TensorFlow Derin öğrenme öğreticisinin sonraki bölümünde, TensorFlow mimarisi ve TensorFlow'un nasıl çalıştığı hakkında bilgi edineceğiz.

TensorFlow Nasıl Çalışır?

TensorFlow, girdileri Tensor adlı çok boyutlu bir dizi olarak alarak verilerin bir grafikte nasıl hareket ettiğini tanımlamak için veri akışı grafikleri ve yapıları oluşturmanıza olanak tanır. Bir uçta giden ve diğer ucunda çıktı olarak gelen bu girdiler üzerinde gerçekleştirilebilecek işlemlerin bir akış şeması oluşturmanıza olanak sağlar.

TensorFlow Mimarisi

Tensorflow mimarisi üç kısımda çalışır:

  • Verileri ön işleme
  • Modeli oluşturun
  • Modeli eğitin ve tahmin edin

Tensorflow olarak adlandırılır çünkü girişi çok boyutlu bir dizi olarak alır, aynı zamanda tensörler olarak da bilinir . Bu girdide gerçekleştirmek istediğiniz bir tür işlem akış şeması (Grafik adı verilir) oluşturabilirsiniz. Giriş bir uçtan içeri girer ve daha sonra bu çoklu işlem sisteminden akar ve diğer ucundan çıktı olarak çıkar.

TensorFlow olarak adlandırılmasının nedeni budur çünkü tensör bir operasyonlar listesinden geçer ve sonra diğer taraftan çıkar.

Tensorflow nerede koşabilir?

TensorFlow donanım ve yazılım gereksinimleri şu şekilde sınıflandırılabilir:

Geliştirme Aşaması: Bu, modu eğittiğiniz zamandır. Eğitim genellikle Masaüstü veya dizüstü bilgisayarınızda yapılır.

Çalıştırma Aşaması veya Çıkarım Aşaması: Eğitim tamamlandıktan sonra Tensorflow birçok farklı platformda çalıştırılabilir. Çalıştırabilirsin

  • Windows, macOS veya Linux çalıştıran masaüstü
  • Web hizmeti olarak bulut
  • İOS ve Android gibi mobil cihazlar

Onu birden fazla makinede eğitebilir, ardından eğitilmiş modele sahip olduğunuzda farklı bir makinede çalıştırabilirsiniz.

Model, CPU'ların yanı sıra GPU'larda da eğitilebilir ve kullanılabilir. GPU'lar başlangıçta video oyunları için tasarlandı. 2010'un sonlarında Stanford araştırmacıları, GPU'nun matris işlemlerinde ve cebirde çok iyi olduğunu ve bu tür hesaplamaları yapmak için onları çok hızlı hale getirdiğini keşfettiler. Derin öğrenme, çok sayıda matris çarpımına dayanır. TensorFlow, C ++ ile yazıldığı için matris çarpımını hesaplamada çok hızlıdır. C ++ 'da uygulanmış olmasına rağmen, TensorFlow'a Python başta olmak üzere diğer diller tarafından erişilebilir ve kontrol edilebilir.

Son olarak, TensorFlow'un önemli bir özelliği TensorBoard'dur. TensorBoard, TensorFlow'un ne yaptığını grafiksel ve görsel olarak izlemeyi sağlar.

TensorFlow Bileşenlerine Giriş

Tensör

Tensorflow'un adı doğrudan temel çerçevesinden türetilmiştir: Tensor . Tensorflow'da tüm hesaplamalar tensör içerir. Bir tensör, tüm veri türlerini temsil eden n boyutlu bir vektör veya matristir . Bir tensördeki tüm değerler, bilinen (veya kısmen bilinen) bir şekle sahip aynı veri türünü tutar . Verinin şekli, matrisin veya dizinin boyutluluğudur.

Bir tensör, giriş verilerinden veya bir hesaplamanın sonucundan kaynaklanabilir. TensorFlow'da tüm işlemler bir grafik içinde yürütülür . Grafik, arka arkaya gerçekleşen bir dizi hesaplamadır. Her işlem bir işlem düğümü olarak adlandırılır ve birbirine bağlıdır.

Grafik, düğümler arasındaki işlemleri ve bağlantıları özetlemektedir. Ancak değerleri göstermez. Düğümlerin kenarı tensördür, yani operasyonu verilerle doldurmanın bir yoludur.

Grafikler

TensorFlow bir grafik çerçevesi kullanır. Grafik, eğitim sırasında yapılan tüm seri hesaplamalarını toplar ve açıklar. Grafiğin birçok avantajı vardır:

  • Birden fazla CPU veya GPU ve hatta mobil işletim sistemi üzerinde çalıştırmak için yapıldı
  • Grafiğin taşınabilirliği, hesaplamaları hemen veya daha sonra kullanmak üzere korumaya izin verir. Grafik gelecekte uygulanmak üzere kaydedilebilir.
  • Grafikteki tüm hesaplamalar tensörleri birbirine bağlayarak yapılır.
    • Bir tensörün bir düğümü ve bir kenarı vardır. Düğüm, matematiksel işlemi taşır ve bir uç nokta çıktıları üretir. Kenarlar, düğümler arasındaki giriş / çıkış ilişkilerini açıklar.

TensorFlow neden popüler?

TensorFlow, herkesin erişebileceği şekilde inşa edildiği için en iyi kitaplıktır. Tensorflow kitaplığı, CNN veya RNN gibi ölçekli derin öğrenme mimarisi oluşturmak için farklı API içerir. TensorFlow grafik hesaplamasına dayanır; geliştiricinin sinir ağının yapısını Tensorboad ile görselleştirmesine olanak tanır. Bu araç, programda hata ayıklamak için faydalıdır. Son olarak, Tensorflow uygun ölçekte dağıtılacak şekilde tasarlanmıştır. CPU ve GPU üzerinde çalışır.

Tensorflow, diğer derin öğrenme çerçevesine kıyasla GitHub'daki en büyük popülariteyi çekiyor.

TensorFlow tarafından desteklenen Öne Çıkan Algoritmaların Listesi

Aşağıda desteklenen TensorFlow algoritmaları listesi verilmiştir:

Şu anda TensorFlow 1.10, aşağıdakiler için yerleşik bir API'ye sahiptir:

  • Doğrusal regresyon: tf.estimator.LinearRegressor
  • Sınıflandırma: tf.estimator.LinearClassifier
  • Derin öğrenme sınıflandırması: tf.estimator.DNNClassifier
  • Derin öğrenme silme ve derinlik: tf.estimator.DNNLinearCombinedClassifier
  • Güçlendirici ağaç regresyonu: tf.estimator.BoostedTreesRegressor
  • Yükseltilmiş ağaç sınıflandırması: tf.estimator.BoostedTreesClassifier

Basit TensorFlow Örneği

import numpy as npimport tensorflow as tf

Kodun ilk iki satırında tensorflow'u tf olarak ithal ettik. Python ile, bir kitaplık için kısa bir ad kullanmak yaygın bir uygulamadır. Avantaj, kullanmamız gerektiğinde kitaplığın tam adını yazmaktan kaçınmaktır. Örneğin, tensorflow'u tf olarak içe aktarabilir ve bir tensorflow işlevi kullanmak istediğimizde tf'yi çağırabiliriz.

Basit TensorFlow örnekleriyle Tensorflow'un temel iş akışını deneyelim. İki sayıyı çarpan bir hesaplama grafiği oluşturalım.

Örnek sırasında, X_1 ve X_2'yi birlikte çarpacağız. Tensorflow, işlemi bağlamak için bir düğüm oluşturacaktır. Örneğimizde buna çarpma deniyor. Grafik belirlendiğinde, Tensorflow hesaplama motorları X_1 ve X_2'yi çarpacaktır.

TensorFlow Örneği

Son olarak, hesaplama grafiğini X_1 ve X_2 değerleriyle çalıştıracak ve çarpmanın sonucunu yazdıracak bir TensorFlow oturumu çalıştıracağız.

X_1 ve X_2 giriş düğümlerini tanımlayalım. Tensorflow'da bir düğüm oluşturduğumuzda, ne tür bir düğüm oluşturacağımızı seçmemiz gerekir. X1 ve X2 düğümleri bir yer tutucu düğüm olacaktır. Yer tutucu, her hesaplama yaptığımızda yeni bir değer atar. Bunları bir TF nokta yer tutucu düğümü olarak oluşturacağız.

Adım 1: Değişkeni tanımlayın

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")

Bir yer tutucu düğüm oluşturduğumuzda, buraya sayılar ekleyecek olan veri türünü girmemiz gerekiyor, böylece kayan noktalı bir veri türü kullanalım, hadi tf.float32 kullanalım. Ayrıca bu düğüme bir isim vermemiz gerekiyor. Modelimizin grafiksel görselleştirmelerine baktığımızda bu isim görünecektir. Bu düğümü X_1 değerine sahip bir parametreyi geçerek X_1 olarak adlandıralım ve şimdi X_2'yi aynı şekilde tanımlayalım. X_2.

Adım 2: Hesaplamayı tanımlayın

multiply = tf.multiply(X_1, X_2, name = "multiply")

Şimdi çarpma işlemini yapan düğümü tanımlayabiliriz. Tensorflow'da bunu bir tf.multiply düğümü oluşturarak yapabiliriz.

X_1 ve X_2 düğümlerini çarpma düğümüne geçireceğiz. Tensorflow'a hesaplama grafiğindeki bu düğümleri bağlamasını söyler, bu yüzden ondan değerleri x ve y'den çekmesini ve sonucu çarpmasını istiyoruz. Ayrıca çarpma düğümüne çarpma adını da verelim. Basit hesaplama grafiğimizin tüm tanımıdır.

3. Adım: İşlemi gerçekleştirin

Grafikteki işlemleri yürütmek için bir oturum oluşturmalıyız. Tensorflow'da tf.Session () tarafından yapılır. Artık bir oturumumuz olduğuna göre, oturumu çağırarak oturumdan hesaplama grafiğimizde işlemler çalıştırmasını isteyebiliriz. Hesaplamayı çalıştırmak için çalıştırmayı kullanmamız gerekir.

Toplama işlemi çalıştığında, X_1 ve X_2 düğümlerinin değerlerini alması gerektiğini görecek, bu nedenle X_1 ve X_2 için değerleri beslememiz gerekiyor. Bunu feed_dict adlı bir parametre sağlayarak yapabiliriz. X_1 için 1,2,3 ve X_2 için 4,5,6 değerini iletiyoruz.

Sonuçları baskı (sonuç) ile yazdırıyoruz. 1x4, 2x5 ve 3x6 için 4, 10 ve 18 görmeliyiz

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]

Verileri TensorFlow'a Yükleme Seçenekleri

Bir makine öğrenimi algoritmasını eğitmeden önceki ilk adım, verileri yüklemektir. Verileri yüklemenin iki yaygın yolu vardır:

1. Verileri belleğe yükleyin: En basit yöntemdir. Tüm verilerinizi tek bir dizi olarak belleğe yüklersiniz. Bir Python kodu yazabilirsiniz. Bu kod satırlarının Tensorflow ile ilgisi yoktur.

2. Tensorflow veri ardışık düzeni. Tensorflow, verileri yüklemenize, işlemi gerçekleştirmenize ve makine öğrenimi algoritmasını kolayca beslemenize yardımcı olan yerleşik API'ye sahiptir. Bu yöntem, özellikle büyük bir veri kümeniz olduğunda çok iyi çalışır. Örneğin, görüntü kayıtlarının çok büyük olduğu ve belleğe sığmadığı bilinmektedir. Veri ardışık düzeni belleği kendi başına yönetir

Hangi çözümü kullanmalı?

Verileri belleğe yükle

Veri kümeniz çok büyük değilse, yani 10 gigabayttan küçükse, ilk yöntemi kullanabilirsiniz. Veriler hafızaya sığabilir. CSV dosyalarını içe aktarmak için Pandas adlı ünlü bir kitaplığı kullanabilirsiniz. Sonraki eğitimde pandalar hakkında daha fazla bilgi edineceksiniz.

Tensorflow ardışık düzeniyle veri yükleme

İkinci yöntem, büyük bir veri kümeniz varsa en iyi sonucu verir. Örneğin, 50 gigabaytlık bir veri kümeniz varsa ve bilgisayarınızda yalnızca 16 gigabayt bellek varsa, makine çökecektir.

Bu durumda, bir Tensorflow ardışık düzeni oluşturmanız gerekir. Ardışık düzen, verileri toplu veya küçük yığın halinde yükleyecektir. Her parti boru hattına itilecek ve eğitime hazır olacaktır. Bir ardışık düzen oluşturmak mükemmel bir çözümdür çünkü paralel hesaplamayı kullanmanıza izin verir. Bu, Tensorflow'un modeli birden çok CPU'da eğiteceği anlamına gelir. Hesaplamayı teşvik eder ve güçlü sinir ağını eğitmek için izin verir.

Sonraki eğitimlerde sinir ağınızı beslemek için önemli bir boru hattının nasıl inşa edileceğini göreceksiniz.

Özetle, küçük bir veri kümeniz varsa, verileri Pandas kitaplığı ile belleğe yükleyebilirsiniz.

Büyük bir veri kümeniz varsa ve birden fazla CPU kullanmak istiyorsanız, Tensorflow ardışık düzeniyle çalışmak daha rahat olacaktır.

Tensorflow ardışık düzeni oluşturun

Önceki örnekte, X_1 ve X_2 için manuel olarak üç değer ekliyoruz. Şimdi verileri Tensorflow'a nasıl yükleyeceğimizi göreceğiz.

Adım 1) Verileri oluşturun

Öncelikle iki rasgele değer oluşturmak için numpy kitaplığını kullanalım.

import numpy as npx_input = np.random.sample((1,2))print(x_input)

[[0.8835775 0.23766977]]

Adım 2) Yer tutucuyu oluşturun

Önceki örnekte olduğu gibi, X adında bir yer tutucu oluşturuyoruz. Tensörün şeklini açıkça belirtmemiz gerekiyor. Bu durumda, sadece iki değer içeren bir dizi yükleyeceğiz. Şekli şekil olarak yazabiliriz = [1,2]

# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

Adım 3) Veri kümesi yöntemini tanımlayın

daha sonra, x yer tutucusunun değerini doldurabileceğimiz Veri Kümesini tanımlamamız gerekir. Tf.data.Dataset.from_tensor_slices yöntemini kullanmamız gerekiyor

dataset = tf.data.Dataset.from_tensor_slices(x)

Adım 4) İşlem hattını oluşturun

Dördüncü adımda, verilerin akacağı boru hattını başlatmamız gerekiyor. Make_initializable_iterator ile bir yineleyici oluşturmamız gerekiyor. Yineleyici adını veriyoruz. Sonra bu yineleyiciyi bir sonraki veri grubunu, get_next'i beslemek için çağırmamız gerekir. Bu adıma get_next adını veriyoruz. Örneğimizde, yalnızca iki değere sahip yalnızca bir veri grubu olduğunu unutmayın.

iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()

Adım 5) İşlemi gerçekleştirin

Son adım, önceki örneğe benzer. Bir oturum başlatıyoruz ve işlem yineleyicisini çalıştırıyoruz. Feed_dict'i numpy tarafından üretilen değerle besliyoruz. Bu iki değer, x yer tutucusunu dolduracaktır. Ardından sonucu yazdırmak için get_next komutunu çalıştırıyoruz.

with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]

Özet

TensorFlow anlamı: TensorFlow, son yıllarda en ünlü derin öğrenme kitaplığıdır. TensorFlow kullanan bir uygulayıcı, CNN, RNN veya basit yapay sinir ağı gibi herhangi bir derin öğrenme yapısını oluşturabilir.

TensorFlow çoğunlukla akademisyenler, yeni başlayanlar ve büyük şirketler tarafından kullanılmaktadır. Google, Gmail, Fotoğraf ve Google Arama Motoru dahil hemen hemen tüm Google günlük ürünlerinde TensorFlow kullanır.

Google Brain ekibi, araştırmacılar ve ürün geliştiriciler arasındaki boşluğu doldurmak için TensorFlow'u geliştirdi. 2015'te TensorFlow'u halka açtılar; popülerliği hızla artıyor. Günümüzde TensorFlow, GitHub'da en çok depoya sahip derin öğrenme kitaplığıdır.

Uygulayıcılar Tensorflow'u kullanıyor çünkü geniş ölçekte dağıtımı kolay. Bulutta veya iO'lar ve Android gibi mobil cihazlarda çalışmak üzere oluşturulmuştur.

Tensorflow bir oturumda çalışır. Her oturum, farklı hesaplamalara sahip bir grafikle tanımlanır. Basit bir örnek sayı ile çarpmak olabilir. Tensorflow'da üç adım gereklidir:

  1. Değişkeni tanımlayın
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Hesaplamayı tanımlayın
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. İşlemi gerçekleştirin
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)

Tensorflow'daki yaygın bir uygulama, verileri yüklemek için bir ardışık düzen oluşturmaktır. Bu beş adımı izlerseniz, verileri TensorFLow'a yükleyebilirsiniz.

  1. Verileri oluşturun
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Yer tutucuyu oluşturun
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Veri kümesi yöntemini tanımlayın
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Ardışık düzen oluşturun
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Programı yürütün
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))