TensorFlow के लिए स्विफ्ट (पुरालेख मोड में)

TensorFlow के लिए स्विफ्ट मशीन सीखने के लिए अगली पीढ़ी के मंच में एक प्रयोग था, जिसमें मशीन सीखने, संकलक, विभेदक प्रोग्रामिंग, सिस्टम डिज़ाइन और परे के नवीनतम शोध शामिल थे। यह फरवरी 2021 में संग्रहीत किया गया था। इस परियोजना से कुछ महत्वपूर्ण उपलब्धियों में शामिल हैं:

इस साइट को और अपडेट प्राप्त नहीं होंगे। एपीआई प्रलेखन और बाइनरी डाउनलोड, ओपन डिज़ाइन रिव्यू मीटिंग रिकॉर्डिंग के साथ ही सुलभ रहेंगे।

तीव्र

स्विफ्ट एक ओपन सोर्स सामान्य-प्रयोजन प्रोग्रामिंग भाषा है, जिसमें एक बड़ा और बढ़ता उपयोगकर्ता आधार है। हमने स्विफ्ट को चुना क्योंकि इसमें एक खुली भाषा की डिजाइन प्रक्रिया है और विशिष्ट तकनीकी कारणों के लिए " क्यों स्विफ्ट फॉर टेन्सरफ्लो " दस्तावेज़ में विस्तृत है। हम मानते हैं कि अधिकांश पाठक इससे अपरिचित हैं, इसलिए हम इसके बारे में कुछ अतिरिक्त महत्वपूर्ण बातों पर संक्षेप में बात करेंगे।

स्विफ्ट का विकास 2010 में शुरू हुआ था, और इसका उद्देश्य अकादमिक नवीनता के लिए या धार्मिक रूप से प्रोग्रामिंग के तरीकों को प्रचारित करने के बजाय प्रोग्रामिंग भाषा डिजाइन में सर्वोत्तम प्रथाओं को एक प्रणाली में एक साथ लाना था। नतीजतन, यह बहु-प्रतिमान विकास (जैसे कार्यात्मक, ओओपी, सामान्य, प्रक्रियात्मक, आदि) सभी को एक प्रणाली में समर्थन करता है, और अकादमिक भाषाओं (जैसे पैटर्न मिलान , बीजीय डेटा प्रकार और प्रकार वर्ग) से कई प्रसिद्ध अवधारणाएं लाता है। सबसे आगे। स्विफ्ट में अपने सभी कोड को फिर से लिखने के लिए डेवलपर्स को दृढ़ता से प्रोत्साहित करने के बजाय, यह व्यावहारिक रूप से अन्य भाषाओं के साथ इंटरऑपरेबिलिटी पर ध्यान केंद्रित करता है, उदाहरण के लिए, आपको सी हेडर फ़ाइलों को सीधे आयात करने और उन्हें एफएफआई के बिना उपयोग करने की अनुमति देता है और (अब) रैपर के बिना पायथन एपीआई का उपयोग करने की क्षमता। ।

सीखने और उपयोग करने में आसान होने पर ध्यान केंद्रित करने के साथ, स्विफ्ट का निम्न-स्तरीय सिस्टम प्रोग्रामिंग से उच्च-स्तरीय स्क्रिप्टिंग तक सभी तरह से फैले जाने का दुस्साहसिक लक्ष्य है। क्योंकि स्विफ्ट को सीखने और उपयोग करने में आसान लेकिन शक्तिशाली होने की आवश्यकता है, यह जटिलता के प्रगतिशील प्रकटीकरण के सिद्धांत पर निर्भर करता है , जो उस जटिलता से लाभान्वित होने वाले लोगों पर जटिलता की लागत को आक्रामक रूप से प्रभावित करता है। उच्च प्रदर्शन के साथ संयुक्त "स्क्रिप्टिंग भाषा का अनुभव" मशीन सीखने के लिए बहुत उपयोगी है।

स्विफ्ट के डिजाइन का एक अंतिम प्रासंगिक पहलू यह है कि स्विफ्ट भाषा का अधिकांश भाग वास्तव में इसके मानक पुस्तकालय में लागू किया गया है। इंट और बूल जैसे "बिलिन" प्रकार वास्तव में मानक पुस्तकालय में परिभाषित संरचनाएं हैं जो जादू के प्रकार और संचालन को लपेटते हैं। जैसे, कभी-कभी हम मजाक करते हैं कि स्विफ्ट "एलएलवीएम के लिए सिंटैक्टिक शुगर" है।

और भी बहुत कुछ है जो स्विफ्ट और ऑनलाइन उपलब्ध सामग्री के एक टन के बारे में अच्छा है। यदि आप सामान्य स्विफ्ट प्रोग्रामिंग अवधारणाओं के बारे में अधिक जानने में रुचि रखते हैं, तो यहां कुछ लिंक दिए गए हैं:

एक चेतावनी: स्विफ्ट अपने शुरुआती वर्षों में तेजी से विकसित हुई है, इसलिए आपको स्विफ्ट 3 (2016 में जारी) से पहले किसी भी चीज से सावधान रहना चाहिए।

TensorFlow के लिए स्विफ्ट क्यों?

TensorFlow के लिए स्विफ्ट मशीन लर्निंग मॉडल विकसित करने का एक नया तरीका है। यह आपको स्विफ्ट प्रोग्रामिंग भाषा में सीधे एकीकृत TensorFlow की शक्ति प्रदान करता है । हम मानते हैं कि मशीन सीखने के प्रतिमान इतने महत्वपूर्ण हैं कि वे प्रथम श्रेणी की भाषा और संकलक समर्थन के लायक हैं।

मशीन लर्निंग में एक मौलिक आदिम क्रमिक-आधारित अनुकूलन है: मापदंडों का अनुकूलन करने के लिए फ़ंक्शन डेरिवेटिव की गणना। TensorFlow के लिए स्विफ्ट के साथ, आप आसानी से gradient(of:) ऑपरेटर्स जैसे gradient(of:) का अंतर का उपयोग करके फ़ंक्शन को अंतर कर सकते हैं, या मेथड gradient(in:) कहकर पूरे मॉडल के संबंध में अंतर कर सकते हैं। ये भेदभाव एपीआई बस उपलब्ध के लिए नहीं हैं Tensor संबंधी अवधारणाओं-वे सभी प्रकार है कि के अनुरूप के लिए सामान्यीकृत कर रहे हैं Differentiable प्रोटोकॉल, सहित Float , Double , SIMD वैक्टर, और अपने खुद के डेटा संरचनाओं।

// 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 परियोजना के लिए स्विफ्ट उपयोगकर्ताओं को अधिक उत्पादक बनाने के लिए एक परिष्कृत टूलचैन के साथ आता है। आप स्विफ्ट को एक ज्यूपिटर नोटबुक में अंतःक्रियात्मक रूप से चला सकते हैं, और एक आधुनिक गहन शिक्षण पुस्तकालय की विशाल एपीआई सतह का पता लगाने में मदद करने के लिए उपयोगी स्वत: पूर्ण सुझाव प्राप्त कर सकते हैं। आप सही सेकंड में अपने ब्राउज़र में शुरू कर सकते हैं !

TensorFlow के लिए स्विफ्ट में माइग्रेट करना स्विफ्ट के शक्तिशाली पायथन एकीकरण के लिए वास्तव में आसान है। आप अपने Python कोड को अचानक बढ़ा सकते हैं (या अपने पसंदीदा Python पुस्तकालयों का उपयोग करना जारी रख सकते हैं), क्योंकि आप आसानी से अपने पसंदीदा Python पुस्तकालय को एक परिचित वाक्यविन्यास के साथ कह सकते हैं:

0cbb10ee0