TensorFlow
TensorFlow, modelleri sunucularda, tarayıcılarda ve telefonlarda eğitmek ve devreye almak için Google'ın açık kaynaklı ML çerçevesidir; üst düzey API olarak Keras'ı kullanır.
TensorFlow, Google Brain ekibinin kurum içi araştırma ve ürünler için geliştirmesinin ardından Google'ın Kasım 2015'te Apache 2.0 lisansı altında yayımladığı açık kaynaklı bir makine öğrenimi (ML) çerçevesidir. Derin öğrenme ve diğer sayısal işlemlere yönelik programlar, çok boyutlu sayı dizileri olan tensörler üzerindeki işlemler olarak hesaplamayı ifade eder. TensorFlow bu işlemleri otomatik olarak türevler, optimize edilmiş grafikler hâlinde derler ve CPU'larda, GPU'larda ve TPU'larda çalıştırır. Ekosistemi, eğitimden model dağıtımına kadar tüm MLOps sürecini kapsar: model tanımlamak için Keras, deneyleri takip etmek için TensorBoard, üretimde model sunumu için TensorFlow Serving, tarayıcılar için TensorFlow.js ve uç yapay zekâ çalıştıran telefonlar ile gömülü cihazlar için eski adı TensorFlow Lite olan LiteRT. Google, Mart 2026'da TensorFlow 2.21 ile TensorFlow'un gelecekteki çalışmalarının güvenlik ve hata düzeltmelerine, bağımlılık güncellemelerine ve topluluk katkılarına odaklanacağını belirtti ve yeni üretken yapay zekâ projeleri için Keras 3, JAX veya PyTorch kullanılmasını önerdi.
TensorFlow Nasıl Çalışır#
TensorFlow 1.x'te kullanıcılar önce statik bir hesaplama grafiği oluşturup ardından bunu bir oturumda çalıştırıyordu. 2019'da yayımlanan TensorFlow 2.0, varsayılan olarak istekli yürütmeyi kullanıma sundu; böylece işlemler sıradan Python kodu gibi hemen çalışır. Grafikleri ise optimizasyon amacıyla korudu: tf.function ile dekore edilmiş bir fonksiyon, her girdi imzası için bir kez izlenerek TensorFlow'un optimize edebileceği, XLA derleyicisiyle derleyebileceği ve Python olmadan dağıtım için SavedModel biçiminde kaydedebileceği bir grafiğe dönüştürülür. tf.GradientTape, TensorFlow'un geri yayılım ve gradyan inişi için gradyanları hesaplayabilmesi amacıyla ileri geçişin işlemlerini kaydeder. Bu kod her iki işi de yapar:
import tensorflow as tf
w = tf.Variable([[1.0], [-2.0]])
x = tf.constant([[3.0, 4.0]])
@tf.function # trace the Python function into a TensorFlow graph on the first call
def loss_fn(x):
print("Tracing") # Python code runs only while tracing, not on every call
return tf.reduce_sum((x @ w) ** 2)
# Record operations on a tape to compute the gradient of the loss with respect to w
with tf.GradientTape() as tape:
loss = loss_fn(x)
gradient = tape.gradient(loss, w)
loss_fn(x) # same input shape and dtype: reuses the traced graph without printing
print(f"loss {loss.numpy()}, gradient {gradient.numpy().ravel()}")Önce Tracing ifadesini bir kez, ardından loss 25.0, gradient [-30. -40.] ifadesini yazdırır: ikinci çağrı Python gövdesini çalıştırmadan önbelleğe alınmış grafiği yürütmüştür ve w = (1, -2) noktasında (3w₁ + 4w₂)² gradyanı 2 × (-5) × (3, 4) değerindedir. Dağıtık eğitim için tf.distribute stratejileri, bir modeli birden fazla GPU, TPU dilimi veya makineye çoğaltır.
TensorFlow Ekosistemi#
- Keras: Katmanları ve modelleri tanımlamak, ayrıca
fitile eğitmek için kullanılan üst düzey API. TensorFlow 2.16'dan bu yana TensorFlow kurulumu Keras 3'ü de yükler; Keras 3 ayrıca JAX ve PyTorch üzerinde çalışır. - TensorBoard: Eğitim sırasında kayıp eğrileri, metrikler, histogramlar ve model grafikleri için bir gösterge paneli. Diğer çerçevelerin yazdığı günlükleri de okuyabilir; TensorFlow 2.21 ise artık TensorBoard'u bağımlılık olarak yüklemez.
- TensorFlow Serving: SavedModel'ları yükleyen ve sürümleme desteğiyle modelleri çalışırken değiştirmeyi sağlayarak gRPC veya REST üzerinden tahmin isteklerini yanıtlayan bir sunum sistemi.
- TFX: Veri doğrulama, eğitim ve değerlendirme adımlarını birbirine bağlayan, ardından onaylanmış bir modeli sunuma aktaran üretim amaçlı makine öğrenimi işlem hattı çerçevesi.
- TensorFlow.js: Modelleri tarayıcıda ve Node.js ortamında çalıştırıp eğitir; böylece verileri sunucuya göndermeden kullanıcının cihazında çıkarım yapılabilir.
- LiteRT: Google'ın Android, iOS, gömülü Linux ve mikrodenetleyiciler için geliştirdiği, Eylül 2024'te TensorFlow Lite adını bırakan cihaz üzerinde çalışma zamanı. TensorFlow, PyTorch veya JAX'ten dönüştürülmüş
.tflitemodellerini çalıştırır ve mobil GPU'lar ile NPU'lardan hızlandırma desteği alır.
TensorFlow, PyTorch ve JAX Karşılaştırması#
- PyTorch ve TensorFlow karşılaştırması: PyTorch en başından beri istekli yürütmeyi temel alır;
torch.compileise grafik derlemesini ekler. Yeni araştırma kodlarının ve açık ağırlıklı modellerin çoğunda varsayılan çerçevedir. TensorFlow ise sunucular, tarayıcılar ve mobil cihazlar için olgun dağıtım yığınıyla öne çıkar. - JAX: Google'ın, birleştirilebilir dönüşümlerden oluşan NumPy tarzı kütüphanesi; türevler için
grad, XLA derlemesi içinjitve vektörleştirme içinvmapkullanır. Google, Gemini modellerini JAX ile eğitir. - Keras: Ayrı bir motor değil, üst düzey bir API'dir. Keras 3 kodu TensorFlow, JAX veya PyTorch üzerinde çalışır; bu nedenle model tanımı projeyi tek bir çerçeveye bağlamaz.
TensorFlow Çalışma Zamanları için Model Dönüştürme#
Diğer çerçevelerde eğitilen modeller, dönüştürücüler aracılığıyla TensorFlow'un dağıtım araçlarına ulaşır: onnx2tf, bir ONNX grafiğini yeniden oluşturarak TensorFlow SavedModel'a dönüştürür; jax2tf, JAX fonksiyonlarını TensorFlow fonksiyonları olarak sarmalar ve Google'ın LiteRT Torch dönüştürücüsü doğrudan PyTorch'tan LiteRT modelleri üretir. Ultralytics YOLO modelleri PyTorch'ta yazılır ve dışa aktarma modu, YOLO26 için bu yolları kullanır: format="saved_model", ONNX'i dışa aktarır ve TensorFlow Serving için onnx2tf ile SavedModel'a dönüştürür; format="edgetpu", Coral Edge TPU'lar için bir INT8 modeli derler ve format="litert", LiteRT Torch'u kullanarak TensorFlow kurulumuna ihtiyaç duymaz. Bu kod SavedModel dışa aktarımını çalıştırır:
from ultralytics import YOLO
# Load the smallest YOLO26 detection model
model = YOLO("yolo26n.pt")
# Convert through ONNX to a TensorFlow SavedModel directory
path = model.export(format="saved_model")
print(f"SavedModel: {path}")Dışa aktarma işlemi, Python'da tf.saved_model.load tarafından yüklenen ve Ultralytics YOLO'nun da YOLO("yolo26n_saved_model") ile çalıştırabildiği bir yolo26n_saved_model klasörü oluşturur.










