امروز برای رویداد محلی TensorFlow خود در همه جا پاسخ دهید!
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

Swift for TensorFlow (در حالت بایگانی)

Swift برای TensorFlow آزمایشی در سیستم عامل نسل بعدی یادگیری ماشین بود که شامل جدیدترین تحقیقات در زمینه یادگیری ماشین ، کامپایلرها ، برنامه نویسی متمایز ، طراحی سیستم و موارد دیگر است. در فوریه 2021. بایگانی شد. برخی از دستاوردهای قابل توجه این پروژه شامل موارد زیر است:

این سایت به روزرسانی های بیشتری دریافت نخواهد کرد. اسناد API و بارگیری های باینری و همچنین ضبط شده های جلسه Open Design Review همچنان در دسترس خواهند بود.

سریع

Swift یک زبان برنامه نویسی با کاربرد عمومی متن باز است که دارای پایگاه کاربری گسترده و در حال رشد است. ما Swift را انتخاب کردیم زیرا فرآیند طراحی آن به زبان باز است و به دلایل خاص فنی که در سند " چرا Swift برای TensorFlow " شرح داده شده است. ما تصور می کنیم که اکثر خوانندگان با آن آشنایی ندارند ، بنابراین ما در اینجا به طور خلاصه به برخی از موارد مهم دیگر در مورد آن اشاره خواهیم کرد.

توسعه سوئیفت از سال 2010 آغاز شد و هدف آن ایجاد بهترین شیوه ها در طراحی زبان برنامه نویسی در یک سیستم به جای تلاش برای تازگی دانشگاهی یا تبلیغ متدولوژی برنامه نویسی بود. در نتیجه ، از توسعه چند پارادایمی (به عنوان مثال عملکردی ، OOP ، عمومی ، رویه ای و غیره) همه در یک سیستم پشتیبانی می کند و بسیاری از مفاهیم معروف را از زبان های دانشگاهی به ارمغان می آورد (به عنوان مثال مطابقت الگو ، انواع داده های جبری و کلاس های نوع) به خط مقدم. این برنامه به جای تشویق شدید توسعه دهندگان برای نوشتن مجدد همه کدهای خود در Swift ، بر روی قابلیت همکاری با زبان های دیگر متمرکز است ، به عنوان مثال به شما امکان می دهد مستقیماً پرونده های هدر C را وارد کرده و از آنها بدون FFI و (اکنون) توانایی استفاده از Python API بدون بسته بندی استفاده کنید. .

سوئیفت این هدف جسورانه را دارد که از برنامه نویسی سیستم های سطح پایین تا برنامه نویسی های سطح بالا ، با تمرکز بر روی یادگیری و استفاده آسان ، گسترش یابد . از آنجا که یادگیری و استفاده از سوئیفت آسان است ، اما همچنین قدرتمند است ، به اصل افشای تدریجی پیچیدگی متکی است ، که به طرز تهاجمی هزینه پیچیدگی را برای افرادی که از این پیچیدگی بهره می برند ، عامل می کند. "احساس زبان برنامه نویسی" همراه با عملکرد بالا برای یادگیری ماشین بسیار مفید است.

جنبه نهایی مربوط به طراحی Swift این است که بسیاری از زبان Swift در واقع در کتابخانه استاندارد آن پیاده سازی شده است. انواع "Builtin" مانند Int و Bool در واقع فقط ساختارهایی هستند که در کتابخانه استاندارد تعریف شده اند و انواع جادویی را بسته بندی می کنند. به همین ترتیب ، بعضی اوقات ما شوخی می کنیم که سوئیفت فقط "قند نحوی LLVM" است.

چیزهای زیادی وجود دارد که جالب در مورد Swift و یک تن محتوای آنلاین است. اگر شما علاقه مند به کسب اطلاعات بیشتر در مورد مفاهیم کلی برنامه نویسی Swift هستید ، در اینجا چند لینک برای شروع وجود دارد:

یک هشدار: سوئیفت در سالهای ابتدایی خود به سرعت تکامل یافته است ، بنابراین باید مراقب هر چیزی قبل از سوئیفت 3 باشید (در سال 2016 منتشر شد).

چرا Swift برای TensorFlow؟

Swift for TensorFlow راهی جدید برای توسعه مدل های یادگیری ماشین است. این به شما قدرت TensorFlow را می دهد که مستقیماً در زبان برنامه نویسی Swift قرار دارد . ما معتقدیم که پارادایم های یادگیری ماشینی آنقدر مهم هستند که مستحق پشتیبانی از زبان درجه یک و پشتیبانی کامپایلر هستند .

یک امر ابتدایی اساسی در یادگیری ماشین ، بهینه سازی مبتنی بر شیب است: مشتقات تابع محاسبات برای بهینه سازی پارامترها. با استفاده از Swift برای TensorFlow ، می توانید با استفاده از عملگرهای دیفرانسیل مانند gradient(of:) ، عملکردها را به راحتی از هم تفکیک کنید یا با فراخوانی gradient(in:) روش gradient(in:) ، نسبت به کل مدل متفاوت شوید. این API های تمایز فقط برای مفاهیم مرتبط با Tensor در دسترس نیستند - آنها برای همه انواع سازگار با پروتکل Differentiable ، از جمله Float ، Double ، SIMD vectors و ساختار داده های خود شما تعمیم داده می شوند.

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

فراتر از مشتقات ، پروژه Swift for TensorFlow همراه با یک ابزار پیچیده برای بهره وری بیشتر کاربران است. می توانید Swift را به صورت تعاملی در یک دفترچه یادداشت Jupyter اجرا کنید و پیشنهادهای تکمیل خودکار مفیدی را برای کمک به شما در کشف سطح عظیم API کتابخانه مدرن یادگیری عمیق دریافت کنید. در عرض چند ثانیه می توانید درست در مرورگر خود شروع کنید !

مهاجرت به Swift برای TensorFlow به لطف یکپارچه سازی قدرتمند Swift با Python واقعاً آسان است. می توانید به تدریج کد پایتون خود را انتقال دهید (یا به استفاده از کتابخانه های پایتون مورد علاقه خود ادامه دهید) ، زیرا به راحتی می توانید با یک نحو آشنا با کتابخانه پایتون مورد علاقه خود تماس بگیرید:

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!