TensorFlow, verilerden örüntü öğrenen makine öğrenmesi ve özellikle derin öğrenme modelleri geliştirmek, eğitmek ve çalıştırmak için kullanılan açık kaynaklı bir yazılım platformudur. Python ile bir model kurup bu modele örnek veriler sunabilir, eğitim sonucunda yeni girdiler için tahmin alabilirsiniz. Ancak TensorFlow tek başına hazır ve doğru sonuç garantileyen bir yapay zekâ değildir; modelin başarısı verinin niteliğine, seçilen yönteme ve eğitimin nasıl yapılandırıldığına bağlıdır.
TensorFlow, verileri sayısal tensörler olarak işler. Tensör, tek bir sayıdan çok boyutlu dizilere kadar farklı boyutlardaki sayısal verilerin genel adıdır. Model ise bu veriler ile beklenen sonuç arasındaki ilişkiyi öğrenmeye çalışan matematiksel yapıdır.
Eğitim sırasında model önce bir tahmin üretir. Bu tahmin, bilinen doğru sonuçla karşılaştırılır ve aradaki farka göre modelin iç parametreleri güncellenir. Bu işlem çok sayıda örnek üzerinde tekrarlandıkça model, eğitim verisindeki örüntüleri öğrenmeye çalışır. Eğitimde kullanılmayan yeni verilerle yapılan değerlendirme ise modelin yalnızca örnekleri ezberleyip ezberlemediğini anlamaya yardımcı olur.
TensorFlow; sınıflandırma, sayısal tahmin, görüntü işleme, metin analizi ve zaman serisi gibi farklı makine öğrenmesi görevlerinde kullanılabilir. Büyük modellerin eğitiminde donanım hızlandırmasından yararlanabilir; ancak hangi donanımın kullanılacağı, kurulum ayrıntıları ve desteklenen özellikler kullanılan sürüme ve çalışma ortamına göre değişebilir.
Aşağıdaki örnek, tek giriş değeri ile tek çıkış değeri arasındaki basit ilişkiyi öğrenen varsayımsal bir model kurar. Amaç gerçek bir uygulamayı çözmek değil, TensorFlow modelinin girdi, eğitim ve çıktı akışını göstermektir.
Ön koşul olarak Python ortamınızda TensorFlow'un kurulu olması gerekir. Kod, giriş olarak yaklaşık 1, 2, 3 ve 4 değerlerini; beklenen çıkış olarak da 3, 5, 7 ve 9 değerlerini kullanır. Model bu örneklerden, çıktının yaklaşık olarak
Çıktının tam olarak 21 olması beklenmez; eğitim sayısının, başlangıç parametrelerinin ve sayısal hesaplamaların etkisiyle 21'e yakın bir değer görülebilir. Bu sonuç, modelin verilen küçük örneklerdeki ilişkiyi yakaladığını gösterir; gerçek verilerde de aynı doğruluğun sağlandığını kanıtlamaz. Özellikle eğitim verisi azsa model yeni ve farklı girdilerde hatalı tahmin yapabilir.
TensorFlow model kurma, eğitim, değerlendirme ve tahmin süreçleri için araçlar sağlar. Veri dönüştürme, model katmanları, kayıp hesaplama ve eğitim döngüsü gibi parçaları bir arada kullanmanıza yardımcı olur. Buna karşılık hangi verilerin toplanacağına, verilerin hatalı veya yanlı olup olmadığına ve çıktının uygulama açısından kabul edilebilir olup olmadığına kendisi karar vermez.
Bir modelin eğitim başarısını yalnızca eğitim verisi üzerindeki sonuçla değerlendirmek doğru değildir. Eğitim sonucu çok iyi görünmesine rağmen yeni verilerde başarısızlık yaşanıyorsa model eğitim örneklerini ezberlemiş olabilir. Bu nedenle veriyi eğitim ve değerlendirme bölümlerine ayırmak, uygun başarı ölçütü seçmek ve gerçek kullanım koşullarına benzeyen verilerle kontrol etmek gerekir.
TensorFlow öğrenmeye başlarken önce Python dizileri, temel makine öğrenmesi kavramları ve model değerlendirme mantığı anlaşılmalıdır. Ardından küçük ve açık bir veri kümesiyle giriş, eğitim ve tahmin akışını kurmak; daha sonra görüntü, metin veya zaman serisi gibi hedef probleme uygun model yapısına geçmek en güvenli ilerleme yoludur.
TensorFlow nasıl çalışır?
TensorFlow, verileri sayısal tensörler olarak işler. Tensör, tek bir sayıdan çok boyutlu dizilere kadar farklı boyutlardaki sayısal verilerin genel adıdır. Model ise bu veriler ile beklenen sonuç arasındaki ilişkiyi öğrenmeye çalışan matematiksel yapıdır.
Eğitim sırasında model önce bir tahmin üretir. Bu tahmin, bilinen doğru sonuçla karşılaştırılır ve aradaki farka göre modelin iç parametreleri güncellenir. Bu işlem çok sayıda örnek üzerinde tekrarlandıkça model, eğitim verisindeki örüntüleri öğrenmeye çalışır. Eğitimde kullanılmayan yeni verilerle yapılan değerlendirme ise modelin yalnızca örnekleri ezberleyip ezberlemediğini anlamaya yardımcı olur.
TensorFlow; sınıflandırma, sayısal tahmin, görüntü işleme, metin analizi ve zaman serisi gibi farklı makine öğrenmesi görevlerinde kullanılabilir. Büyük modellerin eğitiminde donanım hızlandırmasından yararlanabilir; ancak hangi donanımın kullanılacağı, kurulum ayrıntıları ve desteklenen özellikler kullanılan sürüme ve çalışma ortamına göre değişebilir.
En küçük çalışan örnek
Aşağıdaki örnek, tek giriş değeri ile tek çıkış değeri arasındaki basit ilişkiyi öğrenen varsayımsal bir model kurar. Amaç gerçek bir uygulamayı çözmek değil, TensorFlow modelinin girdi, eğitim ve çıktı akışını göstermektir.
Ön koşul olarak Python ortamınızda TensorFlow'un kurulu olması gerekir. Kod, giriş olarak yaklaşık 1, 2, 3 ve 4 değerlerini; beklenen çıkış olarak da 3, 5, 7 ve 9 değerlerini kullanır. Model bu örneklerden, çıktının yaklaşık olarak
2 × giriş + 1 ilişkisini öğrenmeye çalışır.- Girdi ve beklenen sonuçları tanımlayın.
xdizisi modelin göreceği girişleri,ydizisi ise bu girişler için doğru kabul edilen çıkışları içerir. - Yoğun bir model oluşturun. Tek nöronlu
Densekatmanı, bu basit örnekte giriş ile çıkış arasındaki doğrusal ilişkiyi öğrenmek için kullanılır. - Modeli derleyin. Kayıp fonksiyonu tahmin hatasını ölçer; iyileştirici ise eğitim sırasında model parametrelerini günceller.
- Modeli eğitin.
fitçağrısı, verilen örnekleri belirtilen sayıda yineleyerek modelin parametrelerini değiştirir. - Yeni bir değer için tahmin alın. Eğitimde doğrudan kullanılmayan 10 değeri modele verin. Çıktının 21'e yakın olması beklenir; bu, modelin örneklerdeki doğrusal ilişkiyi yaklaşık olarak öğrendiğini gösterir.
Python:
import numpy as np
import tensorflow as tf
x = np.array([1, 2, 3, 4], dtype=float)
y = np.array([3, 5, 7, 9], dtype=float)
model = tf.keras.Sequential([
tf.keras.layers.Dense(units=1, input_shape=[1])
])
model.compile(
optimizer="sgd",
loss="mean_squared_error"
)
model.fit(x, y, epochs=500, verbose=0)
prediction = model.predict(np.array([10.0]), verbose=0)
print(prediction[0][0])
Çıktının tam olarak 21 olması beklenmez; eğitim sayısının, başlangıç parametrelerinin ve sayısal hesaplamaların etkisiyle 21'e yakın bir değer görülebilir. Bu sonuç, modelin verilen küçük örneklerdeki ilişkiyi yakaladığını gösterir; gerçek verilerde de aynı doğruluğun sağlandığını kanıtlamaz. Özellikle eğitim verisi azsa model yeni ve farklı girdilerde hatalı tahmin yapabilir.
TensorFlow ne sağlar, neyi sağlamaz?
TensorFlow model kurma, eğitim, değerlendirme ve tahmin süreçleri için araçlar sağlar. Veri dönüştürme, model katmanları, kayıp hesaplama ve eğitim döngüsü gibi parçaları bir arada kullanmanıza yardımcı olur. Buna karşılık hangi verilerin toplanacağına, verilerin hatalı veya yanlı olup olmadığına ve çıktının uygulama açısından kabul edilebilir olup olmadığına kendisi karar vermez.
Bir modelin eğitim başarısını yalnızca eğitim verisi üzerindeki sonuçla değerlendirmek doğru değildir. Eğitim sonucu çok iyi görünmesine rağmen yeni verilerde başarısızlık yaşanıyorsa model eğitim örneklerini ezberlemiş olabilir. Bu nedenle veriyi eğitim ve değerlendirme bölümlerine ayırmak, uygun başarı ölçütü seçmek ve gerçek kullanım koşullarına benzeyen verilerle kontrol etmek gerekir.
TensorFlow öğrenmeye başlarken önce Python dizileri, temel makine öğrenmesi kavramları ve model değerlendirme mantığı anlaşılmalıdır. Ardından küçük ve açık bir veri kümesiyle giriş, eğitim ve tahmin akışını kurmak; daha sonra görüntü, metin veya zaman serisi gibi hedef probleme uygun model yapısına geçmek en güvenli ilerleme yoludur.