Catat tanggalnya! Google I / O mengembalikan 18-20 Mei Daftar sekarang
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Swift untuk TensorFlow (Dalam Mode Arsip)

Swift untuk TensorFlow adalah eksperimen di platform generasi berikutnya untuk pembelajaran mesin, yang menggabungkan penelitian terbaru di seluruh pembelajaran mesin, kompiler, pemrograman yang dapat dibedakan, desain sistem, dan lainnya. Itu diarsipkan pada Februari 2021. Beberapa pencapaian penting dari proyek ini meliputi:

Situs ini tidak akan menerima pembaruan lebih lanjut. Dokumentasi API dan unduhan biner akan terus dapat diakses serta rekaman rapat Tinjauan Desain Terbuka .

Cepat

Swift adalah bahasa pemrograman tujuan umum open source , yang memiliki basis pengguna yang besar dan terus berkembang. Kami memilih Swift karena memiliki proses desain bahasa terbuka dan untuk alasan teknis tertentu yang dijelaskan dalam dokumen " Mengapa Swift untuk TensorFlow ". Kami berasumsi bahwa sebagian besar pembaca tidak terbiasa dengannya, jadi kami akan menyentuh secara singkat beberapa hal penting tambahan tentangnya di sini.

Pengembangan Swift dimulai pada tahun 2010, dan bertujuan untuk menyatukan praktik terbaik dalam desain bahasa pemrograman ke dalam satu sistem daripada mencoba hal baru akademis atau menyebarkan metodologi pemrograman secara religius. Hasilnya, ini mendukung pengembangan multi-paradigma (misalnya fungsional, OOP, generik, prosedural, dll) semua dalam satu sistem, dan membawa banyak konsep terkenal dari bahasa akademik (misalnya pencocokan pola , tipe data aljabar , dan kelas tipe) ke garis depan. Alih-alih sangat mendorong pengembang untuk menulis ulang semua kode mereka di Swift, itu secara pragmatis berfokus pada interoperabilitas dengan bahasa lain, misalnya, memungkinkan Anda untuk langsung mengimpor file header C dan menggunakannya tanpa FFI dan (sekarang) kemampuan untuk menggunakan Python API tanpa pembungkus .

Swift memiliki tujuan yang berani untuk mencakup mulai dari pemrograman sistem tingkat rendah hingga skrip tingkat tinggi, dengan fokus agar mudah dipelajari dan digunakan . Karena Swift harus mudah dipelajari dan digunakan, tetapi juga kuat, Swift bergantung pada prinsip pengungkapan kompleksitas yang progresif , yang secara agresif memfaktorkan biaya kompleksitas ke orang-orang yang mendapat manfaat dari kompleksitas tersebut. "Nuansa bahasa skrip" yang dikombinasikan dengan performa tinggi sangat berguna untuk pembelajaran mesin.

Aspek penting terakhir dari desain Swift adalah bahwa sebagian besar bahasa Swift sebenarnya diimplementasikan di pustaka standarnya. Jenis "Builtin" seperti Int dan Bool sebenarnya hanya struct yang didefinisikan dalam pustaka standar yang membungkus jenis dan operasi sihir. Karena itu, terkadang kami bercanda bahwa Swift hanyalah "gula sintaksis untuk LLVM".

Ada lebih banyak hal keren tentang Swift dan banyak konten yang tersedia secara online. Jika Anda tertarik untuk mempelajari lebih lanjut tentang konsep umum pemrograman Swift, berikut beberapa tautan untuk memulai:

Satu peringatan: Swift berkembang pesat di tahun-tahun awalnya, jadi Anda harus berhati-hati dengan apa pun sebelum Swift 3 (dirilis pada 2016).

Mengapa Swift untuk TensorFlow?

Swift untuk TensorFlow adalah cara baru untuk mengembangkan model pembelajaran mesin. Ini memberi Anda kekuatan TensorFlow yang terintegrasi langsung ke dalam bahasa pemrograman Swift . Kami percaya bahwa paradigma pembelajaran mesin sangat penting sehingga membutuhkan bahasa kelas satu dan dukungan compiler .

Hal mendasar dalam pembelajaran mesin adalah pengoptimalan berbasis gradien: turunan fungsi komputasi untuk mengoptimalkan parameter. Dengan Swift untuk TensorFlow, Anda dapat dengan mudah membedakan fungsi menggunakan operator diferensial seperti gradient(of:) , atau membedakan sehubungan dengan keseluruhan model dengan memanggil gradient(in:) metode gradient(in:) . API diferensiasi ini tidak hanya tersedia untuk konsep yang terkait dengan Tensor API tersebut juga digeneralisasikan untuk semua jenis yang sesuai dengan protokol Dapat Differentiable , termasuk Float , Double , vektor SIMD, dan struktur data Anda sendiri.

// 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

Selain turunan, proyek Swift untuk TensorFlow hadir dengan toolchain canggih untuk membuat pengguna lebih produktif. Anda dapat menjalankan Swift secara interaktif di notebook Jupyter, dan mendapatkan saran pelengkapan otomatis yang berguna untuk membantu Anda menjelajahi permukaan API yang sangat besar dari pustaka deep learning modern. Anda dapat memulai langsung di browser Anda dalam hitungan detik !

Bermigrasi ke Swift untuk TensorFlow sangat mudah berkat integrasi Python yang kuat dari Swift. Anda dapat secara bertahap memigrasi kode Python Anda (atau terus menggunakan pustaka Python favorit Anda), karena Anda dapat dengan mudah memanggil pustaka Python favorit Anda dengan sintaks yang sudah dikenal:

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!