Tensörler, çok boyutlu dizilerin matris temsillerinden başka bir şey değildir.
TensorFlow, Derin Öğrenme görevleri için Google tarafından geliştirilmiş derin Öğrenme kütüphanesidir. Ancak yalnızca derin Öğrenme görevleri için limitli değildir. TensorFlow aynı zamanda geleneksel makine öğrenimi için de kullanılabilir. TensorFlow hem yüksek seviyeli hem de düşük seviyeli API’lere sahiptir. Yüksek seviyeli API, kompleks derin Öğrenme moellerini birkaç satır kod ile inşa etmeyi sağlar. Düşük seviyeli (low level) API çalışmalarınızda daha çok özelleştirme sağlar.
Yeni bir kütüphane ile başlarken en iyi yol, veri yapılarını incelemektir. TensorFlow ile başlarken ana veri yapısı olan Tensör’leri inceleyerek başlayacağız. Tensör, derin öğrenmede kullanılan teknik bir terimdir. Tensörler, çok boyutlu dizilerin matris temsillerinden başka bir şey değildir.

Programlama ortamımızı oluşturalım.
TensorFlow 2 kütüphanesi pip yüklemesi aracılığı ile tek bir pakette CPU ve GPU desteğini sağlar. Önceki versiyonlarda, hem CPU hem GPU desteği için 2 ayrı paket yüklemek gerekiyordu. Ancak, en son version ile, ihtiyaç yok artık. Ancak TensorFlow, GPU desteğini yalnızca NVIDIA CUDA destekli grafik kartları için içerir.
TensorFlow 2 yüklemek için en basit yöntem pip paketini kullanmaktır.
pip install tensorflow

Bilgisayarınıza yüklemeden Google CoLab kullanarak da TensorFlow kütüphanesi ile çalışmalarınızı yapabilirsiniz.
https://colab.research.google.com/

Tensör oluşturmak için 2 fonksiyon vardır.
constant() : bu fonksiyon ile tensör oluşturuyorsanız, aynı programlama oturumunda tensör değiştirilemez, modifiye edilemez. Bu yüzden, sabit tensör / constant tensör olarak adlandırılır
Variable() : eğer variable ile tensör oluşturuyorsanız, tensör aynı programlama oturumunda değiştirilebilir, modifiye edilebilir. Değişken tensördür / variable tensör’dür.
Bir tensörün ana özellikleri :
Rank : rank , bir tensörün boyutunu (eksen / axis) ifade eder. tf.rank() fonksiyonu ile erişilebilir.
Shape : bir tensör objesinin şekil özelliğine shape özelliği ile erişilir.
Veri tipi : bir tensörün veri tipini tanımlar. dtype ile erişilir.
Tensör tipleri :
Tensörler çok boyutlu olabilir, herhangi bir boyuta sahip olabilir. Yüksek boyutlu tensör formatlarını hayal etmek, canlandırmak zor olabilir. Tensörleri 4 ana kategoride kategorize ediyoruz.
- Scalar (0D Tensör) : herhangi bir boyutu olmaksızın yalnızca bir sayıdır. (0 boyutlu)
- Vector (1D Tensör) : tek boyutlu sayı dizisidir.
- Matrix (2D Tensör) : Vektör koleksiyonundan oluşan 2 boyutlu dizidir.
- 3D Matrix (3D Tensör) : resim verisi ile çalışırken, 3D matrisleri sıklıkla kullanırız. matris koleksiyonu olarak düşünebiliriz.
Scalar oluşturma işlemi (0D Tensör) :
TensorFlow kullanarak | NumPy kullanarak |
import tensorflow as tf a=tf.Variable(20) print(a) print(“\nRank:”,tf.rank(a)) print(“Shape:”,a.shape) print(“Data Type:”,a.dtype) | import numpy as np b=np.array(19) print(b) print(“\nRank:”,b.ndim) print(“Shape:”,b.shape) print(“Data Type:”,b.dtype) |
TensorFlow çıktısı:

NumPy çıktısı :

Vektör oluşturma işlemi (1D Tensör) :
TensorFlow kullanarak | NumPy kullanarak |
x1=tf.Variable([1,3,5,7]) print(x1) print(“\nRank:”,tf.rank(x1)) print(“Shape:”,x1.shape) print(“Data Type:”,x1.dtype) | x2=np.array([3.5,6.5,6.7,7.2]) print(x2) print(“\nRank:”,tf.rank(x2)) print(“Shape:”,x2.shape) print(“Data Type:”,x2.dtype) |
Tensorflow çıktısı:

NumPy çıktısı :

Matris Oluşturma işlemi (2D Tensör) :
TensorFlow kullanarak | NumPy kullanarak |
m1=tf.Variable([[1,2,3],[4,5,6]]) print(m1) print(“\nRank:”,tf.rank(m1)) print(“Shape:”,m1.shape) print(“Data Type:”,m1.dtype) | m2=np.array([[1.0,2.1,3.5,4.9], [1.2,1.7,1.9,7.8]]) print(m2) print(“\nRank:”,m2.ndim) print(“Shape:”,m2.shape) print(“Data Type:”,m2.dtype) |
TensorFlow çıktısı :

NumPy çıktısı :

3D Matris Oluşturma işlemi (3D Tensör) :
TensorFlow kullanarak | NumPy kullanarak |
k1=tf.Variable([[[1,2,3],[4,5,6]], [[2,2,2],[5,5,5]]]) print(k1) print(“\nRank:”,tf.rank(k1)) print(“Shape:”,k1.shape) print(“Data Type:”,k1.dtype) | k2=np.array([[[2,3,4],[9,8,7]], [[1,0,1],[0,0,0]]]) print(k2) print(“\nRank:”,np.ndim(k2)) print(“Shape:”,k2.shape) print(“Data Type:”,k2.dtype) |
Samples : 2 Satır : 2 Sütun : 3 | Rank :3 Shape : (2,2,3) Data type : int64 |
TensorFlow çıktısı:

NumPy çıktısı :

Veri tipinin önemi :
Tensörler ve NumPy dizileri görünürde olduça benzerler. Ancak, varsayılan olarak,TensorFlow oluşturulurken 32 bit-bit veri değerlerini kullanır.TensorFlow Derin Öğrenme modellerinin performansını arttırmak için tasarlanmıştır. 32-bit veri değerleri daha hızlı çalışır ve daha az hesaplama kaynağı kullanır. Buna karşın, NumPy diziler oluşturulurken, 64-bit veri değerlerini kullanır.
İkisi arasında değişim :
Eğer bir tensör varsa elinizde, kolayca muadili NumPy dizisine dönüştürebilirsiniz.

Bir NumPy dizisinden bir tensör oluşturmak:

NumPy’de varsayılan veri değeri 64-bit olduğundan, NumPy’dan -> Tensöre dönüştürürken dtype=tf.float32 ile dönüşüm yapılmalıdır.