TensorFlow
TensorFlow Google tarafından yayınlanan bir makine öğrenimi ve derin öğrenme kütüphanesidir ve Google, kullanıcılarına daha iyi bir kullanıcı deneyimi sunmak için bu kütüphaneyi çeşitli yerlerde kullanmıştır. Bir örnek olarak, bir arama başlattığınızda Google'ın metninizi otomatik olarak tamamlaması verilebilir.

Makine öğrenimini kullanan üç grup insan vardır: 1. Araştırmacılar 2. Veri bilimciler 3. Programcılar. Bu kişilerin ihtiyaçlarını karşılamak için Google Brain ekibi TensorFlow kütüphanesini oluşturmuştur. TensorFlow, farklı CPU ve GPU'larda çalışabilir ve C++, Python veya Java gibi farklı dillerle kullanılabilir. TensorFlow, sunucularda ve hatta mobil telefonlarda bile kullanılabilir.
TensorFlow'un Tarihi
Veri hacmi arttıkça, derin öğrenme algoritmaları derin öğrenmenin önüne geçmeye başladı ve Google, bu derin sinir ağlarıyla hizmetlerini geliştirebileceği sonucuna vardı ve geliştiricilerin ve araştırmacıların yapay zeka modelleri üzerinde eş zamanlı olarak birlikte çalışmasına yardımcı olabilecek TensorFlow adlı bir çerçeve oluşturmaya başladı.
Proje yeterince geliştirilip ölçeklenebilir hale geldiğinde, 2015 yılında halka açık olarak yayınlandı. Ancak kararlı sürüm 2017 yılına kadar yayınlanmadı.
TensorFlow'un en önemli özelliği, açık kaynaklı olması ve Apache tarafından lisanslanmış olmasıdır; bu sayede kolayca kullanabilir, düzenleyebilir ve kendi dağıtımınızı yayınlayabilirsiniz. Hatta Google'a ödeme yapmadan para bile kazanabilirsiniz. .
TensorFlow Mimarisi
TensorFlow mimarisi üç bölümden oluşur: 1. Veri ön işleme 2. Model oluşturma 3. Model eğitimi ve tahmini. Bu isimlendirmenin nedeni, TensorFlow'un girdi olarak çok boyutlu diziler almasıdır; bu dizilerin isimleri ise şunlardır: tensör Ardından verileriniz üzerinde bir dizi işlem grafiği çalıştırabilirsiniz; bunlar şunlardır: akış şeması Evet.
Nerede yapılır?
Bu kütüphaneyi kullanmanın iki aşaması vardır:
Geliştirme aşaması: Modeli eğittiğiniz bir zaman dilimi vardır ve bu genellikle dizüstü bilgisayarınızda veya sisteminizde yapılır.
Uygulama aşaması: Eğitim tamamlandıktan sonra, modelinizi masaüstü bilgisayarlardan sunuculara ve hatta cep telefonlarına kadar her yerde çalıştırabilirsiniz.
Dolayısıyla modelin eğitimi ve çalıştırılması farklı makinelerde yapılabilir.
CPU'ların yanı sıra, TensorFlow'u GPU'larda da çalıştırabilirsiniz.
Matris hesaplamalarında, aynı operatör büyük miktarda bilgi üzerinde uygulandığı için, bu tür hesaplamalar, Stanford araştırmacılarının 2010 sonlarında keşfettiği gibi, GPU'ların yapısıyla uyumludur.
Bir diğer nokta ise bu kütüphanenin C++ ile yazılmış olması, bu nedenle çok hızlı olmasıdır. Elbette, Python gibi diğer dillerle de kullanabilirsiniz.
TensorFlow'un önemli özelliklerinden biri de, TensorFlow'un neler yaptığını görmenizi sağlayan TensorBoard'dur.
TensorFlow bileşenleri
Tensör
Tensör, çeşitli bilgi türlerini temsil edebilen N boyutlu matrislerden oluşan bir dizidir. Tensördeki her değer aynı şekle sahip bilgi içerir.
Tensörler bir hesaplamanın girdisi veya çıktısı olabilir.
Grafik
TensorFlow'da tüm işlemler bir grafik içinde gerçekleştirilir. Her grafik, ardışık olarak gerçekleştirilen hesaplamaların bir koleksiyonudur. Her hesaplama, birbirine bağlı olan bir işlem düğümü (op node) olarak bilinir.
Peki neden grafik?
- Farklı sistemlerde çalışabilir.
- Grafik daha sonra kullanılmak üzere kaydedilebilir.
- Grafikteki tüm hesaplamalar tensörlerin birbirine bağlanmasıyla gerçekleştirilir.
- Özetle, grafiklerde her kenar bir değer (tensör) ve her düğüm bir operatördür (örneğin toplama).
TensorFlow neden bu kadar ünlü?
TensorFlow en iyisidir çünkü herkesin kullanabileceği şekilde tasarlanmıştır ve RNN, CNN gibi derin öğrenme mimarileriyle farklı ölçeklerde kullanılabilen API'ler sunar. Grafik tabanlı hesaplamaya dayandığı için, sinir ağlarını TensorBoard içinde görselleştirme yeteneğine sahiptir ki bu da hata ayıklama için çok kullanışlıdır. Ve genel olarak, TensorFlow dağıtım sırasında ölçeklenebilirlik için tasarlanmıştır.
İyi haber şu ki, GitHub'daki çeşitli derin öğrenme çerçeveleri arasında en büyük topluluğa sahip.
TensorFlow kaç algoritmayı destekliyor?
- Doğrusal Regresyon: tf.estimator.LinearRegressor
- Sınıflandırma: tf.estimator.LinearClassifier
- Derin sınıflandırma: tf.estimator.DNNClassifier
- Derin öğrenme silme ve derin: tf.estimator.DNNLinearCombinedClassifier
- Güçlendirici ağaç regresyonu: tf.estimator.BoostedTreesRegressor
- Geliştirilmiş ağaç sınıflandırması: tf.estimator.BoostedTreesClassifier
Birkaç basit örnek
- 12numpy'yi np olarak içe aktar
- tensorflow'u tf olarak içe aktarın
Yukarıdaki iki satırda, numpy ve tensorflow kütüphanelerini içe aktarıyoruz.
Bu örnekte, X_1 ve X_2'yi çarpmak istiyoruz. Öncelikle grafiği oluşturmamız ve ardından sonucu hesaplamak için bir TensorFlow oturumu çalıştırmamız gerekiyor.
Hadi başlayalım.
Adım 1: Değişkeni tanımlayın
İlk adım, X_1 ve X_2 giriş düğümlerini oluşturmaktır. TensorFlow'da, oluşturacağımız düğümün türünü belirtmemiz gerekir; burada yer tutucu türünü seçiyoruz.
yer tutucu:
Bu tür, her hesaplama yaptığımızda tensöre yeni bir değer atar.
- X_1 = tf.placeholder(tf.float32, name = “X_1”)
- X_2 = tf.placeholder(tf.float32, name = “X_2”)
Gördüğünüz gibi, bu düğümün türünü float, adını ise değişken adı olarak girdik.
Adım 2: Hesaplamayı tanımlayın
- 1çarpma = tf.multiply(X_1, X_2, name = “multiply”)
Yukarıdaki satırla, çarpma operatörünün operatörü gibi davranan bir köşe noktası oluşturuyoruz.
Çarpma işlemini yapmak istediğimiz köşelerin girdisi olan bu fonksiyona "çarpma" adını verdik.
Böylece ilk grafiğimizi oluşturduk.
Adım 3: İşlemi gerçekleştirin
İşlemi gerçekleştirmek için bir oturum oluşturmamız gerekiyor. Bu oturum tf.Session() kullanılarak oluşturulur ve run komutunu kullandığımızda yürütülür.
Çarpma işlemini çalıştıracağımız zaman, x1 ve x2 tensörlerinin değerlerini girdi olarak vermemiz gerekiyor. Bu, feed_dict'e değer atayarak yapılır. Bu örnekte, x1'e 1'den 3'e kadar olan değerler, x2'ye ise 4'ten 6'ya kadar olan değerler atanmıştır. Ve sonucu yazdırıyoruz.
- X_1 = tf.placeholder(tf.float32, name = “X_1”)
- X_2 = tf.placeholder(tf.float32, name = “X_2”)
- 1çarpma = tf.multiply(X_1, X_2, name = “multiply”)
- tf.Session() ile oturum olarak:
- sonuç = oturum.çarpan(çarpma, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
- yazdır(sonuç)
- [ 4. 10. 18.]
TensorFlow'a veri aktarmanın farklı yolları
Modelin eğitilmesinden önceki ilk adımlardan biri, iki şekilde yapılabilen veri içe aktarmaktır:
- RAM'e veri girme: Bir bellek dizisine veri girmenin basit bir yolu vardır; örneğin, Python'da bir satır kod yazmak gibi.
- TensorFlow Veri İşlem Hattını Kullanma: TensorFlow, verileri almanıza, üzerinde bir dizi işlem gerçekleştirmenize ve ardından algoritmanıza beslemenize yardımcı olan bir dizi API'ye sahiptir. Bu yöntem, özellikle veriler çok büyük olduğunda çok etkilidir. Örneğin, resimler çok büyüktür ve RAM'e sığmaz. Burada, veri işlem hattı RAM yönetimini üstlenir.
Şimdi soru şu: Hangisini kullanacağız?
Veriniz 10 GB'tan az ise, örneğin pandas gibi ünlü bir kütüphane kullanarak ilk yöntemi kolayca kullanabilirsiniz. Aksi takdirde, örneğin 30 GB veriniz varsa ve RAM'iniz 12 GB ise, doğal olarak bu yöntemi kullanamazsınız ve pipeline API'sine yönelmeniz gerekir. Pipeline, verileri gruplandırır ve her grup pipeline'a girer ve modeli öğrenmek için kullanılır. Pipeline kullanımı, paralel işlemeyi kullanmanıza olanak tanır. Bu, TensorFlow'un modeli aynı anda birkaç farklı CPU üzerinde eğitebileceği anlamına gelir.
Özetle, verileriniz küçükse, örneğin pandas kullanarak, hepsini RAM'e yükleyin. Aksi takdirde veya birden fazla CPU kullanmak istiyorsanız, TensorFlow işlem hattını kullanın.
TensorFlow'da bir işlem hattı oluşturma
Adım 1) Veri oluşturun
NumPy kütüphanesini kullanarak iki rastgele sayı üretiyoruz.
- 123numpy'yi np olarak içe aktar
- x_girdi = np.rastgele.örnek((1,2))
- yazdır(x_girdisi)
- 1[[0.8835775 0.23766977]]
Adım 2) Bir yer tutucu oluşturun
Bu adımda, float türünde iki üyesi olan bir dizi olarak X adında bir yer tutucu oluşturuyoruz.
- # yer tutucusu kullanılarak
- x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
3. Adım: Veri kümesini oluşturun
Bu aşamada, yer tutucu değer x'i yerleştireceğimiz veri setini tanımlamamız gerekiyor.
- 1tf.data.Dataset.from_tensor_slices
- 1veri kümesi = tf.data.Dataset.from_tensor_slices(x)
Adım 4: İşlem hattını oluşturun
Bu adımda işlem hattını başlatmamız gerekiyor; ilk adım, veriler üzerinde yineleme yapacak bir yineleyici oluşturmaktır. `get_next` yöntemiyle bir sonraki değeri alıyoruz; bu örnekte yalnızca iki değere sahip bir grup veri bulunmaktadır.
- 12yineleyici = veri kümesi.başlatılabilir yineleyici oluştur()
- get_next = iterator.get_next()
Adım 5: Hesaplamayı çalıştırın
Son adımda, girdisi bir yineleyici ve numpy tarafından oluşturulan girdi değerleri olan bir oturum çalıştırıyoruz ve her biri için değerini yazdırıyoruz.
- tf.Session() ile oturum olarak:
- # yer tutucuya veri besler
- sess.run(iterator.initializer, feed_dict={ x: x_input })
- print(sess.run(get_next))
- 1[0.8835775 0.23766978]
Özet
TensorFlow, herhangi bir derin öğrenme çerçevesi oluşturmak için kullanabileceğiniz en ünlü derin öğrenme kütüphanesidir. Google Brain, araştırma ekipleri ve geliştirme ekipleri arasındaki boşluğu kapatmak için bu projeyi geliştirdi ve Google bunu neredeyse tüm projelerinde kullanıyor. TensorFlow kullanmanın ana nedenlerinden biri, dağıtım sırasında ölçeklenebilirliğin kolaylığıdır. TensorFlow, güçlü sunuculardan Android ve iOS telefonlara kadar her yerde kullanılabilir.
TensorFlow, her oturumun farklı hesaplamalar içeren bir grafikle tanımlandığı bir oturum içinde çalışır.
TensorFlow'da basit bir örnek olarak, çarpma işlemi şu şekilde yapılır:
1. Değişken tanımı
- X_1 = tf.placeholder(tf.float32, name = “X_1”)
- X_2 = tf.placeholder(tf.float32, name = “X_2”)
2. Hesaplamanın Tanımı
- 1çarpma = tf.multiply(X_1, X_2, name = “multiply”)
3. İşlemlerin yürütülmesi
- tf.Session() ile oturum olarak:
- sonuç = oturum.çarpan(çarpma, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
- yazdır(sonuç)
TensorFlow'da yaygın bir uygulama, verileri RAM'e yüklemek için bir işlem hattı oluşturmaktır ve bu işlem aşağıdaki adımlarla gerçekleştirilir:
1. Veri oluşturma
- numpy'yi np olarak içe aktar
- x_girdi = np.rastgele.örnek((1,2))
- yazdır(x_girdisi)
2. Bir yer tutucu oluşturun.
- 1x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
3. Veri kümesi yönteminin tanımı
- 1veri kümesi = tf.data.Dataset.from_tensor_slices(x)
4. Boru hattı inşaatı
- 1iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
5. Program yürütme
- tf.Session() ile oturum olarak:
- sess.run(iterator.initializer, feed_dict={ x: x_input })
- print(sess.run(get_next))










