Yerel TensorFlow Everywhere etkinliğiniz için bugün LCV!
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

TensorFlow için Swift (Arşiv Modunda)

TensorFlow için Swift, makine öğrenimi, derleyiciler, farklılaştırılabilir programlama, sistem tasarımı ve daha fazlasıyla ilgili en son araştırmaları bir araya getiren yeni nesil makine öğrenimi platformunda bir deneydi. Şubat 2021'de arşivlendi. Bu projeden elde edilen bazı önemli başarılar şunlardır:

Bu site daha fazla güncelleme almayacak. API belgeleri ve ikili indirmelerin yanı sıra Açık Tasarım İncelemesi toplantı kayıtları da erişilebilir olmaya devam edecek.

Swift

Swift, geniş ve büyüyen bir kullanıcı tabanına sahip açık kaynaklı bir genel amaçlı programlama dilidir. Swift'i seçtik çünkü açık dil tasarım süreci var ve " TensorFlow için Neden Swift " belgesinde ayrıntılı olarak açıklanan belirli teknik nedenlerden dolayı. Çoğu okuyucunun buna aşina olmadığını varsayıyoruz, bu yüzden burada onunla ilgili bazı önemli ek noktalara kısaca değineceğiz.

Swift'in gelişimi 2010 yılında başladı ve akademik yenilik ya da programlama metodolojilerini dini olarak yaymak yerine programlama dili tasarımındaki en iyi uygulamaları tek bir sistemde bir araya getirmeyi amaçladı. Sonuç olarak, çoklu paradigma geliştirmeyi (örn. Fonksiyonel, OOP, jenerik, prosedürel vb.) Tek bir sistemde destekler ve akademik dillerden birçok iyi bilinen kavramı (örn. Örüntü eşleştirme , cebirsel veri türleri ve tür sınıfları) getirir. ön plana. Geliştiricileri Swift'de tüm kodlarını yeniden yazmaya şiddetle teşvik etmek yerine, pragmatik olarak diğer dillerle birlikte çalışabilirliğe odaklanır, örneğin, C başlık dosyalarını doğrudan içe aktarmanıza ve bunları bir FFI olmadan kullanmanıza ve (şimdi) Python API'lerini sarmalayıcılar olmadan kullanmanıza olanak tanır. .

Swift, öğrenmesi ve kullanması kolay olmaya odaklanarak, düşük seviyeli sistem programlamasından yüksek seviyeli komut dosyalarına kadar uzanan cesur bir hedefe sahiptir. Swift'in öğrenmesi ve kullanması kolay ama aynı zamanda güçlü olması gerektiği için , karmaşıklığın maliyetini bu karmaşıklıktan yararlanan insanlara agresif bir şekilde etkileyen karmaşıklığın aşamalı olarak açıklanması ilkesine dayanır. Yüksek performansla birleştirilmiş "komut dosyası dili hissi" makine öğrenimi için çok yararlıdır.

Swift tasarımının son bir ilgili yönü, Swift dilinin çoğunun aslında standart kitaplığında uygulanmış olmasıdır. Int ve Bool gibi "yerleşik" türler, aslında sihirli türleri ve işlemleri saran standart kitaplıkta tanımlanan yapılardır . Bu nedenle, bazen Swift'in sadece "LLVM için sözdizimsel şeker" olduğu konusunda şaka yapıyoruz.

Swift hakkında harika olan çok şey ve çevrimiçi olarak kullanılabilen tonlarca içerik var. Genel Swift programlama kavramları hakkında daha fazla bilgi edinmek istiyorsanız, başlamak için birkaç bağlantı aşağıda verilmiştir:

Bir uyarı: Swift ilk yıllarında hızla gelişti, bu nedenle Swift 3'ten önce (2016'da piyasaya sürüldü) her şeye dikkat etmelisiniz.

Neden TensorFlow için Swift?

TensorFlow için Swift, makine öğrenimi modelleri geliştirmenin yeni bir yoludur. Doğrudan Swift programlama diline entegre edilmiş TensorFlow'un gücünü verir. Makine öğrenimi paradigmalarının birinci sınıf dil ve derleyici desteğini hak edecek kadar önemli olduğuna inanıyoruz.

Makine öğreniminde temel bir ilkel, gradyan tabanlı optimizasyondur: parametreleri optimize etmek için hesaplama işlevi türevleri. Swift for TensorFlow ile, gradient(of:) gibi diferansiyel operatörleri kullanarak işlevleri kolayca ayırt edebilir veya gradient(in:) yöntemini çağırarak tüm modele göre farklılaştırabilirsiniz. Bu farklılaştırma API'leri yalnızca Tensor ilgili kavramlar için mevcut değildir - Float , Double , SIMD vektörleri ve kendi veri yapılarınız dahil Differentiable protokole uyan tüm tipler için genelleştirilmiştir.

// Custom differentiable type.
struct Model: Differentiable {
    var w: Float
    var b: Float
    func applied(to input: Float) -> Float {
        return w * input + b
    }
}

// Differentiate using `gradient(at:_:in:)`.
let model = Model(w: 4, b: 3)
let input: Float = 2
let (𝛁model, 𝛁input) = gradient(at: model, input) { model, input in
    model.applied(to: input)
}

print(𝛁model) // Model.TangentVector(w: 2.0, b: 1.0)
print(𝛁input) // 4.0

TensorFlow için Swift projesi, türevlerin ötesinde, kullanıcıları daha üretken kılmak için gelişmiş bir araç zinciri ile birlikte gelir. Swift'i bir Jupyter not defterinde etkileşimli olarak çalıştırabilir ve modern bir derin öğrenme kitaplığının devasa API yüzeyini keşfetmenize yardımcı olacak yararlı otomatik tamamlama önerileri alabilirsiniz. Saniyeler içinde tarayıcınızdan hemen başlayabilirsiniz!

Swift'in güçlü Python entegrasyonu sayesinde TensorFlow için Swift'e geçiş gerçekten çok kolay. Python kodunuzu aşamalı olarak taşıyabilirsiniz (veya favori Python kitaplıklarınızı kullanmaya devam edebilirsiniz), çünkü sevdiğiniz Python kitaplığınızı tanıdık bir sözdizimiyle kolayca çağırabilirsiniz:

import TensorFlow
import Python

let np = Python.import("numpy")

let array = np.arange(100).reshape(10, 10)  // Create a 10x10 numpy array.
let tensor = Tensor<Float>(numpy: array)  // Seamless integration!