TensorFlow API'leri için Swift, hızlandırılmış hesaplama gerçekleştirmenin birincil yolu olarak Tensor
türünü kullanır. Bir Tensor
çok boyutlu bir değerler dizisini temsil eder ve Tensor
üzerindeki işlemler, iki arka uçtan biri kullanılarak otomatik olarak mevcut hızlandırıcılara gönderilir.
Bir Tensor
içerdiği değerlerin türü açısından geneldir . Bu değerlerin türü TensorFlowScalar
ile uyumlu olmalıdır; yaygın türler Float
, Int32
ve Bool
. Örneğin, Float
içeren iki Tensor
önceden belirlenmiş bazı değerlerle başlatmak için aşağıdakileri yapabilirsiniz:
let tensor1 = Tensor<Float>([0.0, 1.0, 2.0])
let tensor2 = Tensor<Float>([1.5, 2.5, 3.5])
<Float>
type parametresini dışarıda bırakmış olsaydınız, Swift bir tür Tensor<Double>
sonucunu çıkarırdı. Double
Swift'deki kayan nokta değişmezleri için varsayılan türdür. Float
değerler makine öğrenimi hesaplamalarında daha yaygın olma eğilimindedir, bu yüzden burada bunu kullanıyoruz.
Birçok yaygın operatör Tensor
çalışır. Örneğin bunlardan ikisini ekleyip sonucu elde etmek için aşağıdakileri yapabilirsiniz:
let tensor3 = tensor1 + tensor2
Bir Tensor
üzerinde gerçekleştirebileceğiniz işlemlerin tam listesi API belgelerinde mevcuttur.
_Raw
işlemler
Tensor
işlemleri, hızlandırıcılarla çalışmanın iki farklı yöntemiyle desteklenir, ancak bunlar birleşik bir üst düzey arayüze sahiptir. Başlık altında, söz konusu Tensor
için kullanılan arka uca bağlı olarak _RawXLA
veya _RawTFEager
sürümlerine gönderilecek _Raw
işlemleri tanımlanır. TensorFlow veya X10'a yapılan bu _Raw
bağlamaları otomatik olarak oluşturulur.
Normalde _Raw
işlemleriyle doğrudan etkileşim kurmanız gerekmez. Deyimsel Swift arayüzleri bunların üzerine inşa edilmiştir ve Tensor
hesaplamalarını genellikle bu şekilde gerçekleştirirsiniz.
Ancak, temel TensorFlow işlemlerinin tümü eşleşen Swift arayüzlerine sahip değildir, bu nedenle zaman zaman kodunuzdaki _Raw
operatörlerine erişmeniz gerekebilir. Bunu yapmanız gerekiyorsa bunun nasıl çalıştığını gösteren etkileşimli bir eğitim mevcuttur.