Lưu ngày! Google I / O hoạt động trở lại từ ngày 18 đến 20 tháng 5 Đăng ký ngay
Trang này được dịch bởi Cloud Translation API.
Switch to English

Swift cho TensorFlow (Trong chế độ lưu trữ)

Swift cho TensorFlow là một thử nghiệm trong nền tảng thế hệ tiếp theo dành cho học máy, kết hợp các nghiên cứu mới nhất về học máy, trình biên dịch, lập trình khác biệt, thiết kế hệ thống, v.v. Nó được lưu trữ vào tháng 2 năm 2021. Một số thành tựu đáng kể từ dự án này bao gồm:

Trang web này sẽ không nhận được thêm thông tin cập nhật. Tài liệu API và các bản tải xuống nhị phân sẽ tiếp tục có thể truy cập được cũng như các bản ghi cuộc họp Đánh giá thiết kế mở .

Nhanh

Swift là một ngôn ngữ lập trình có mục đích chung mã nguồn mở , có cơ sở người dùng lớn và đang phát triển. Chúng tôi chọn Swift vì nó có quy trình thiết kế ngôn ngữ mở và vì những lý do kỹ thuật cụ thể được trình bày chi tiết trong tài liệu " Tại sao sử dụng Swift cho TensorFlow ". Chúng tôi cho rằng hầu hết độc giả không quen thuộc với nó, vì vậy chúng tôi sẽ đề cập ngắn gọn về một số điều quan trọng bổ sung về nó ở đây.

Sự phát triển của Swift bắt đầu vào năm 2010 và nhằm mục đích đưa các phương pháp tốt nhất trong thiết kế ngôn ngữ lập trình lại với nhau thành một hệ thống thay vì cố gắng tìm kiếm tính mới trong học thuật hoặc để truyền bá phương pháp lập trình về mặt tôn giáo. Do đó, nó hỗ trợ phát triển đa mô hình (ví dụ: chức năng, OOP, chung, thủ tục, v.v.) tất cả trong một hệ thống và mang lại nhiều khái niệm nổi tiếng từ các ngôn ngữ học thuật (ví dụ: đối sánh mẫu , kiểu dữ liệu đại số và lớp kiểu) đi đầu. Thay vì khuyến khích mạnh mẽ các nhà phát triển viết lại tất cả mã của họ bằng Swift, nó thực sự tập trung vào khả năng tương tác với các ngôn ngữ khác, ví dụ: cho phép bạn nhập trực tiếp các tệp tiêu đề C và sử dụng chúng mà không cần FFI và (bây giờ) khả năng sử dụng API Python mà không cần trình bao bọc .

Swift có mục tiêu táo bạo là mở rộng tất cả các cách từ lập trình hệ thống cấp thấp đến lập trình tập lệnh cấp cao, tập trung vào việc dễ học và sử dụng . Bởi vì Swift cần phải dễ học và dễ sử dụng nhưng cũng phải mạnh mẽ, nó dựa trên nguyên tắc bộc lộ dần độ phức tạp , điều này làm tăng chi phí phức tạp lên những người hưởng lợi từ sự phức tạp đó. "Cảm giác ngôn ngữ kịch bản" kết hợp với hiệu suất cao rất hữu ích cho việc học máy.

Một khía cạnh thích hợp cuối cùng của thiết kế Swift là phần lớn ngôn ngữ Swift thực sự được triển khai trong thư viện chuẩn của nó. Các loại "Builtin" như IntBool thực chất chỉ là các cấu trúc được định nghĩa trong thư viện tiêu chuẩn bao gồm các loại phép thuật và phép toán. Như vậy, đôi khi chúng ta nói đùa rằng Swift chỉ là "cú pháp cho LLVM".

Còn rất nhiều điều thú vị về Swift và rất nhiều nội dung có sẵn trên mạng. Nếu bạn muốn tìm hiểu thêm về các khái niệm lập trình Swift chung, đây là một vài liên kết để bắt đầu:

Một cảnh báo: Swift phát triển nhanh chóng trong những năm đầu tiên của nó, vì vậy bạn nên cẩn thận với bất cứ điều gì trước Swift 3 (phát hành vào năm 2016).

Tại sao Swift cho TensorFlow?

Swift cho TensorFlow là một cách mới để phát triển các mô hình học máy. Nó cung cấp cho bạn sức mạnh của TensorFlow được tích hợp trực tiếp vào ngôn ngữ lập trình Swift . Chúng tôi tin rằng các mô hình học máy quan trọng đến mức chúng xứng đáng được hỗ trợ trình biên dịch và ngôn ngữ hạng nhất .

Nguyên thủy cơ bản trong học máy là tối ưu hóa dựa trên gradient: tính toán các dẫn xuất của hàm để tối ưu hóa các tham số. Với Swift cho TensorFlow, bạn có thể dễ dàng phân biệt các hàm bằng cách sử dụng các toán tử vi phân như gradient(of:) hoặc phân biệt đối với toàn bộ mô hình bằng cách gọi phương thức gradient(in:) . Các API phân biệt này không chỉ có sẵn cho các khái niệm liên quan đến Tensor — chúng được tổng quát hóa cho tất cả các loại tuân theo giao thức Differentiable , bao gồm vectơ Float , Double , SIMD và cấu trúc dữ liệu của riêng bạn.

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

Ngoài các dẫn xuất, dự án Swift cho TensorFlow đi kèm với một chuỗi công cụ phức tạp để giúp người dùng làm việc hiệu quả hơn. Bạn có thể chạy Swift một cách tương tác trong sổ ghi chép Jupyter và nhận các đề xuất tự động hoàn thành hữu ích để giúp bạn khám phá bề mặt API khổng lồ của thư viện học sâu hiện đại. Bạn có thể bắt đầu ngay trong trình duyệt của mình trong vài giây !

Chuyển sang Swift cho TensorFlow thực sự dễ dàng nhờ tích hợp Python mạnh mẽ của Swift. Bạn có thể dần dần di chuyển mã Python của mình qua (hoặc tiếp tục sử dụng các thư viện Python yêu thích của mình), vì bạn có thể dễ dàng gọi thư viện Python yêu thích của mình bằng cú pháp quen thuộc:

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!