TensorFlow nedir? Nasıl çalışır? Giriiş & Archidoku

Bu eğitime TensorFlow tanıtımıyla başlayalım:

TensorFlow nedir?

TensorFlow Makine Öğrenimi uygulamaları oluşturmaya yönelik 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 türevlenebilir programlamayı kullanan sembolik bir matematik kütüphanesidir. 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 kütüphanesi Google'ın TensorFlow'udur. Google ürünü, arama motorunu, çeviriyi, görsel altyazılarını veya önerileri geliştirmek için tüm ürünlerinde makine öğrenimini kullanır.

TensorFlow Örneği

Somut bir örnek vermek gerekirse Google kullanıcıları yapay zeka ile daha hızlı ve daha hassas bir arama deneyimi yaşayabiliyor. Kullanıcı arama çubuğuna bir anahtar kelime yazarsa Google, bir sonraki kelimenin ne olabileceğine dair bir öneri sunar.

TensorFlow Örneği
TensorFlow Örneği

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

  • Araştırmacılar
  • Veri Bilimcileri
  • Programcılar

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

Google'ın elinde yalnızca herhangi bir veri yoktur; dünyanın en büyük bilgisayarına sahipler, bu nedenle Tensor Flow ölçeklendirmek için tasarlandı. TensorFlow, makine öğrenimini ve derin sinir ağı araştırmalarını hızlandırmak için Google Beyin Ekibi tarafından geliştirilen bir kütüphanedir.

Birden fazla CPU veya GPU ve hatta mobil işletim sistemlerinde çalışacak şekilde tasarlanmıştır ve çeşitli dillerde çeşitli sarmalayıcılara sahiptir: Python, C++ or Java.

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 geliştirmek için bu derin sinir ağlarını kullanabileceğini gördü:

  • Gmail
  • Fotoğraf
  • Google arama motoru

Adı verilen bir çerçeve oluşturuyorlar tensör akışı araştırmacıların ve geliştiricilerin bir yapay zeka modeli üzerinde birlikte çalışmasına olanak sağlamak. Geliştirildikten ve ölçeklendirildikten sonra birçok kişinin kullanmasına olanak tanır.

İlk olarak 2015'in sonlarında kamuya duyuruldu, ilk kararlı sürümü ise 2017'de ortaya çıktı. Apache Açık Kaynak lisansı altında açık kaynaktır. Google'a herhangi bir ödeme yapmadan, ücret karşılığında kullanabilir, değiştirebilir ve değiştirilen sürümü yeniden dağıtabilirsiniz.

Bu TensorFlow Derin Öğrenme eğitiminde bir sonraki adım olarak, TensorFlow mimarisini ve TensorFlow'un nasıl çalıştığını öğreneceğiz.

TensorFlow Nasıl Çalışır?

TensorFlow, girdileri Tensor adı verilen ç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 ucuna giden ve diğer ucuna çıktı olarak gelen bu girdiler üzerinde gerçekleştirilebilecek işlemlerin akış şemasını oluşturmanıza olanak tanır.

TensorFlow Archidoku

Tensorflow mimarisi üç bölümden oluşur:

  • Verileri ön işleme
  • Modeli oluşturun
  • Modeli eğitme ve tahmin etme

Tensorflow olarak da bilinen girdiyi çok boyutlu bir dizi olarak aldığı için buna Tensorflow adı verilmiştir. tansörler. Bir çeşit inşa edebilirsiniz akış şeması o girişte gerçekleştirmek istediğiniz işlemlerin (Grafik olarak adlandırılır) listesi. Girdi bir uçtan girer ve daha sonra bu çoklu işlemlerden oluşan sistem boyunca akar ve diğer uçtan çıktı olarak çıkar.

TensorFlow olarak adlandırılmasının nedeni budur çünkü tensör bir işlemler listesi boyunca akar ve sonra diğer taraftan çıkar.

Tensorflow nerede çalışabilir?

TensorFlow donanımı ve yazılım gereksinimleri 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

  • Masaüstü çalışıyor Windows, macOS veya Linux
  • Bir web hizmeti olarak bulut
  • iOS gibi mobil cihazlar ve Android

Bunu birden fazla makinede eğitebilir ve eğitilen modeli aldıktan sonra farklı bir makinede çalıştırabilirsiniz.

Model, GPU'larda ve CPU'larda eğitilebilir ve kullanılabilir. GPU'lar başlangıçta video oyunları için tasarlanmıştı. 2010'un sonlarında, Stanford araştırmacıları GPU'nun matris işlemlerinde ve cebirde de çok iyi olduğunu ve bu tür hesaplamaları yapmak için çok hızlı olduğunu buldular. Derin öğrenme çok fazla matris çarpımına dayanır. TensorFlow, matris çarpımını hesaplamada çok hızlıdır çünkü C++. Her ne kadar uygulamaya konmuş olsa da C++, TensorFlow'a esas olarak diğer diller tarafından erişilebilir ve kontrol edilebilir, Python.

Son olarak TensorFlow'un önemli bir özelliği de TensorBoard'dur. Tensör Kartı TensorFlow'un ne yaptığını grafiksel ve görsel olarak izlemenizi sağlar.

TensorFlow Bileşenleri

tensör

Tensorflow'un adı doğrudan çekirdek çerçevesinden türetilmiştir: tensör. Tensorflow'da tüm hesaplamalar tensörleri içerir. Bir tensör bir vektör or matris tüm veri türlerini temsil eden n boyutlu boyutlar. Bir tensördeki tüm değerler, bilinen (veya kısmen bilinen) bir veri tipiyle aynı veri tipini tutar. şekil. 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. Grafik, ardışık olarak gerçekleşen bir hesaplama kümesidir. Her operasyona denir işlem düğümü ve birbirlerine bağlıdırlar.

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

Grafikler

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

  • Birden fazla CPU veya GPU'da ve hatta mobil işletim sisteminde çalışacak şekilde yapıldı
  • Grafiğin taşınabilirliği hesaplamaların hemen veya daha sonra kullanılmak üzere saklanmasına olanak tanır. Grafik gelecekte yürütülmek üzere kaydedilebilir.
  • Grafikteki tüm hesaplamalar tensörlerin birbirine bağlanmasıyla yapılır.
    • Tensörün bir düğümü ve bir kenarı vardır. Düğüm matematiksel işlemi taşır ve uç nokta çıktıları üretir. Kenarlar, kenarlar, düğümler arasındaki giriş/çıkış ilişkilerini açıklar.

TensorFlow Neden Popüler?

TensorFlow, herkesin erişebileceği şekilde oluşturulduğu için en iyi kütüphanedir. TensorFlow kütüphanesi, CNN veya RNN gibi ölçeklenebilir derin öğrenme mimarisi oluşturmak için farklı API'ler içerir. TensorFlow, grafik hesaplamaya dayanır; geliştiricinin TensorBoad ile sinir ağının yapısını görselleştirmesine olanak tanır. Bu araç, programı hata ayıklamak için faydalıdır. Son olarak, TensorFlow ölçeklenebilir olarak dağıtılmak üzere oluşturulmuştur. CPU ve GPU üzerinde çalışır.

Tensorflow, diğer derin öğrenme çerçevesiyle karşılaştırıldığında GitHub'da en büyük popülerliği çekiyor.

TensorFlow Algorithms

TensorFlow tarafından desteklenen algoritmalar aşağıdadır:

Ş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 derinleştirme: tf.estimator.DNNLinearCombinedClassifier
  • Güçlendirici ağaç regresyonu: tf.estimator.BoostedTreesRegressor
  • Güçlendirilmiş ağaç sınıflandırması: tf.estimator.BoostedTreesClassifier

TensorFlow'da Hesaplamalar nasıl çalışır?

import numpy as np
import tensorflow as tf

Kodun ilk iki satırında tensorflow'u tf olarak içe aktardık. İle PythonBir kitaplık için kısa ad kullanmak yaygın bir uygulamadır. Bunun avantajı, kullanmamız gerektiğinde kütüphanenin tam adını yazmaktan kaçınmaktır. Örneğin tensorflow'u tf olarak içe aktarabilir ve tensorflow fonksiyonunu kullanmak istediğimizde tf'yi çağırabiliriz.

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

Örnekte 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 denir. Grafik belirlendiğinde Tensorflow hesaplama motorları X_1 ve X_2'yi birlikte çarpacaktır.

Hesaplamalar TensorFlow'da çalışır
TensorFlow Örneği

Son olarak, hesaplamalı grafiği X_1 ve X_2 değerleriyle çalıştıracak ve çarpma 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çmeliyiz. X1 ve X2 düğümleri yer tutucu düğüm olacaktır. Her hesaplama yaptığımızda yer tutucu yeni bir değer atar. Bunları TF nokta yer tutucu düğümü olarak oluşturacağız.

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

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

Yer tutucu düğüm oluşturduğumuzda veri tipini geçmemiz gerekiyor buraya sayıları ekleyeceğiz böylece kayan nokta veri tipini kullanabiliriz, tf.float32 kullanalım. Bu düğüme de bir isim vermemiz gerekiyor. Modelimizin grafiksel görselleştirmelerine baktığımızda bu isim karşımıza çıkacaktır. Bu düğüme X_1 değerini name isimli bir parametre ileterek isimlendirelim ve şimdi X_1'yi de aynı şekilde tanımlayalım. X_2.

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

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

Artık çarpma işlemini yapacak 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 hesaplamalı grafikteki bu düğümleri bağlamasını söyler, bu yüzden ondan x ve y'den değerleri çekip sonucu çarpmasını istiyoruz. Çarpma düğümüne çarpma adını da verelim. Basit hesaplama grafiğimizin tam tanımı budur.

Adım 3: İşlemi yürütün

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

Toplama işlemi çalıştırıldığında, X_1 ve X_2 düğümlerinin değerlerini alması gerektiğini görecek, dolayısıyla X_1 ve X_2 değerlerini de beslememiz gerekiyor. Bunu feed_dict adlı bir parametre sağlayarak yapabiliriz. X_1,2,3 için 1, X_4,5,6 için 2 değerini geçiyoruz.

Sonuçları print(result) ile yazdırıyoruz. 4×10, 18×1 ve 4×2 için 5, 3 ve 6’i 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.]

TensorFlow'a Veri Yükleme Seçenekleri

Eğitimden önceki ilk adım makine öğrenimi algoritması verileri yüklemektir. Veri yüklemenin iki ortak 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 yazabilirsin Python kod. Bu kod satırlarının Tensorflow ile ilgisi yoktur.

2. Tensorflow veri hattı: Tensorflow, verileri kolayca yüklemenize, işlemi gerçekleştirmenize ve makine öğrenimi algoritmasını beslemenize yardımcı olan yerleşik bir API'ye sahiptir. Bu yöntem özellikle büyük bir veri kümeniz olduğunda çok işe yarar. Mesela görüntü kayıtlarının çok büyük olduğu ve hafızaya sığmadığı biliniyor. Veri hattı 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 belleğe sığabilir. CSV dosyalarını içe aktarmak için Pandas adlı ünlü bir kütüphaneyi kullanabilirsiniz. Bir sonraki derste pandalar hakkında daha fazla bilgi edineceksiniz.

Verileri Tensorflow ardışık düzeniyle yükleyin

İ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 gigabaytlık bellek varsa, makine çökecektir.

Bu durumda bir Tensorflow işlem hattı oluşturmanız gerekir. Boru hattı verileri toplu olarak veya küçük parçalar halinde yükleyecektir. Her parti üretim hattına aktarılacak ve eğitime hazır hale getirilecek. Bir işlem hattı oluşturmak mükemmel bir çözümdür çünkü paralel hesaplamayı kullanmanıza olanak tanır. Bu, Tensorflow'un modeli birden fazla CPU üzerinde eğiteceği anlamına gelir. Hesaplamayı teşvik eder ve güçlü sinir ağının eğitilmesine izin verir.

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

Özetle eğer küçük bir veri setiniz varsa Pandas kütüphanesi ile hafızadaki verileri yükleyebilirsiniz.

Büyük bir veri kümeniz varsa ve birden fazla CPU kullanmak istiyorsanız Tensorflow boru hattıyla çalışmak daha rahat olacaktır.

TensorFlow Pipeline Nasıl Oluşturulur

TensorFlow işlem hattı oluşturma adımları şunlardır:

Önceki örnekte X_1 ve X_2 için üç değeri manuel olarak ekledik. Şimdi Tensorflow'a nasıl veri yükleneceğini göreceğiz:

Adım 1) Verileri oluşturun

Öncelikle numpy kütüphanesini kullanarak iki rastgele değer üretelim.

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

[[0.8835775 0.23766977]]

Adım 2) Yer tutucuyu oluşturun

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

# using a placeholder
x = 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 gerekiyor. 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. Buna yineleyici adını veriyoruz. Daha sonra bir sonraki veri grubunu (get_next) beslemek için bu yineleyiciyi çağırmamız gerekir. Bu adıma get_next adını veriyoruz. Örneğimizde yalnızca iki değere sahip yalnızca bir veri kümesinin bulunduğunu unutmayın.

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

Adım 5) İşlemi yürütün

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

with tf.Session() as sess:
    # feed the placeholder with data
    sess.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ılların en ünlü derin öğrenme kütüphanesidir. TensorFlow'u 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 kurulan şirketler ve büyük şirketler tarafından kullanılır. Google, Gmail, Fotoğraf ve Google Arama Motoru dahil olmak üzere hemen hemen tüm Google günlük ürünlerinde TensorFlow'u kullanır.
  • Google Brain ekibi, araştırmacılar ve ürün geliştiricileri 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 fazla depoya sahip derin öğrenme kütüphanesidir.
  • Uygulayıcılar Tensorflow'u kullanıyor çünkü geniş ölçekte dağıtımı kolay. Bulutta veya iO'lar gibi mobil cihazlarda çalışacak şekilde tasarlanmıştır ve Android.

Tensorflow bir oturumda çalışır. Her oturum farklı hesaplamalara sahip bir grafikle tanımlanır. Basit bir örnek sayıyla ç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 yürütün
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 uygulamalardan biri, verileri yüklemek için bir işlem hattı oluşturmaktır. Bu beş adımı izlerseniz TensorFLow'a veri yükleyebileceksiniz:

  1. Verileri oluşturun
import numpy as np
x_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. İşlem hattını oluşturun
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Programı yürüt
with tf.Session() as sess:  
sess.run(iterator.initializer, feed_dict={ x: x_input })  
print(sess.run(get_next))