TensorFlow के लिए स्विफ्ट मशीन सीखने के लिए अगली पीढ़ी के मंच में एक प्रयोग था, जिसमें मशीन सीखने, संकलक, विभेदक प्रोग्रामिंग, सिस्टम डिज़ाइन और परे के नवीनतम शोध शामिल थे। यह फरवरी 2021 में संग्रहीत किया गया था। इस परियोजना से कुछ महत्वपूर्ण उपलब्धियों में शामिल हैं:
- स्विफ्ट भाषा में भाषा-एकीकृत अलग-अलग प्रोग्रामिंग को जोड़ा गया। आधिकारिक स्विफ्ट कंपाइलर में यह काम जारी है।
- एक उत्परिवर्तनीय-मूल्य-शब्दार्थ-उन्मुख गहन शिक्षा एपीआई विकसित किया
- विभिन्न प्रकार के गहन शिक्षण विषयों से 30 से अधिक मॉडल वाले मॉडल उद्यान के विकास को बढ़ावा दिया।
- 3 डी मोशन ट्रैकिंग और परे के लिए संभाव्य चित्रमय मॉडल के साथ गहन सीखने को जोड़ती है कि सक्षम उपन्यास अनुसंधान।
- एक GPU (सीपीयू + सीपीयू रनटाइम सपोर्टिंग सपैप ) का (एन लगभग) शुद्ध-स्विफ्ट प्रोटोटाइप।
- सक्रिय विकास के तहत जारी रखने वाले कई खुले स्रोत की ओर से किए जा रहे प्रयासों से दूर रहें:
- पायथनकिट : स्विफ्ट के साथ पायथन इंटरऑपरेबिलिटी।
- स्विफ्ट-जुपिटर : जुपिटर नोटबुक के भीतर स्विफ्ट का उपयोग करने में सक्षम बनाता है।
- स्विफ्ट-बेंचमार्क : स्विफ्ट कोड के लिए एक मजबूत बेंचमार्किंग सूट प्रदान करता है।
- कई अन्य खुले स्रोत प्रयासों से दूर:
- पेंगुइन : समानांतर प्रोग्रामिंग, डेटा संरचनाएं, ग्राफ़ एल्गोरिदम, और बहुत कुछ।
- पूरी तरह से फिटिंग सेंसर: दसियों आकार बेमेल का स्थैतिक विश्लेषण।
- स्विफ्ट-विकास के प्रस्ताव प्रस्तावित और कार्यान्वित किए गए:
इस साइट को और अपडेट प्राप्त नहीं होंगे। एपीआई प्रलेखन और बाइनरी डाउनलोड, ओपन डिज़ाइन रिव्यू मीटिंग रिकॉर्डिंग के साथ ही सुलभ रहेंगे।
तीव्र
स्विफ्ट एक ओपन सोर्स सामान्य-प्रयोजन प्रोग्रामिंग भाषा है, जिसमें एक बड़ा और बढ़ता उपयोगकर्ता आधार है। हमने स्विफ्ट को चुना क्योंकि इसमें एक खुली भाषा की डिजाइन प्रक्रिया है और विशिष्ट तकनीकी कारणों के लिए " क्यों स्विफ्ट फॉर टेन्सरफ्लो " दस्तावेज़ में विस्तृत है। हम मानते हैं कि अधिकांश पाठक इससे अपरिचित हैं, इसलिए हम इसके बारे में कुछ अतिरिक्त महत्वपूर्ण बातों पर संक्षेप में बात करेंगे।
स्विफ्ट का विकास 2010 में शुरू हुआ था, और इसका उद्देश्य अकादमिक नवीनता के लिए या धार्मिक रूप से प्रोग्रामिंग के तरीकों को प्रचारित करने के बजाय प्रोग्रामिंग भाषा डिजाइन में सर्वोत्तम प्रथाओं को एक प्रणाली में एक साथ लाना था। नतीजतन, यह बहु-प्रतिमान विकास (जैसे कार्यात्मक, ओओपी, सामान्य, प्रक्रियात्मक, आदि) सभी को एक प्रणाली में समर्थन करता है, और अकादमिक भाषाओं (जैसे पैटर्न मिलान , बीजीय डेटा प्रकार और प्रकार वर्ग) से कई प्रसिद्ध अवधारणाएं लाता है। सबसे आगे। स्विफ्ट में अपने सभी कोड को फिर से लिखने के लिए डेवलपर्स को दृढ़ता से प्रोत्साहित करने के बजाय, यह व्यावहारिक रूप से अन्य भाषाओं के साथ इंटरऑपरेबिलिटी पर ध्यान केंद्रित करता है, उदाहरण के लिए, आपको सी हेडर फ़ाइलों को सीधे आयात करने और उन्हें एफएफआई के बिना उपयोग करने की अनुमति देता है और (अब) रैपर के बिना पायथन एपीआई का उपयोग करने की क्षमता। ।
सीखने और उपयोग करने में आसान होने पर ध्यान केंद्रित करने के साथ, स्विफ्ट का निम्न-स्तरीय सिस्टम प्रोग्रामिंग से उच्च-स्तरीय स्क्रिप्टिंग तक सभी तरह से फैले जाने का दुस्साहसिक लक्ष्य है। क्योंकि स्विफ्ट को सीखने और उपयोग करने में आसान लेकिन शक्तिशाली होने की आवश्यकता है, यह जटिलता के प्रगतिशील प्रकटीकरण के सिद्धांत पर निर्भर करता है , जो उस जटिलता से लाभान्वित होने वाले लोगों पर जटिलता की लागत को आक्रामक रूप से प्रभावित करता है। उच्च प्रदर्शन के साथ संयुक्त "स्क्रिप्टिंग भाषा का अनुभव" मशीन सीखने के लिए बहुत उपयोगी है।
स्विफ्ट के डिजाइन का एक अंतिम प्रासंगिक पहलू यह है कि स्विफ्ट भाषा का अधिकांश भाग वास्तव में इसके मानक पुस्तकालय में लागू किया गया है। इंट और बूल जैसे "बिलिन" प्रकार वास्तव में मानक पुस्तकालय में परिभाषित संरचनाएं हैं जो जादू के प्रकार और संचालन को लपेटते हैं। जैसे, कभी-कभी हम मजाक करते हैं कि स्विफ्ट "एलएलवीएम के लिए सिंटैक्टिक शुगर" है।
और भी बहुत कुछ है जो स्विफ्ट और ऑनलाइन उपलब्ध सामग्री के एक टन के बारे में अच्छा है। यदि आप सामान्य स्विफ्ट प्रोग्रामिंग अवधारणाओं के बारे में अधिक जानने में रुचि रखते हैं, तो यहां कुछ लिंक दिए गए हैं:
- स्विफ्ट टूर उच्च स्तरीय वाक्यविन्यास और स्विफ्ट के अनुभव का एक स्केलेबल टूर है, और बड़े "द स्विफ्ट प्रोग्रामिंग लैंग्वेज" पुस्तक का हिस्सा है।
- वैल्यू शब्दार्थ शक्तिशाली होते हैं और स्विफ्ट कोड में एक महत्वपूर्ण भूमिका निभाते हैं, जैसा कि " स्विफ्ट में मूल्य प्रकारों के साथ बिल्डिंग एप्स " में समझाया गया है। [ YouTube ]
- स्विफ्ट क्लासिक ओओपी का समर्थन करता है, लेकिन हास्केल प्रकार प्रणाली से विचारों को अनुकूलित किया है। यह " प्रोटोकॉल-ओरिएंटेड प्रोग्रामिंग इन स्विफ्ट " [ YouTube ] में बताया गया है।
एक चेतावनी: स्विफ्ट अपने शुरुआती वर्षों में तेजी से विकसित हुई है, इसलिए आपको स्विफ्ट 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