মেশিন লার্নিং, সংকলক, ডিফারেন্টেবল প্রোগ্রামিং, সিস্টেম ডিজাইন এবং এর বাইরেও সর্বশেষ গবেষণাকে একীভূত করে মেশিন লার্নিংয়ের জন্য পরবর্তী প্রজন্মের প্ল্যাটফর্মের জন্য সুইফট ফর টেনসরফ্লো ছিল একটি পরীক্ষা। এটি ২০২১ সালের ফেব্রুয়ারিতে সংরক্ষণাগারভুক্ত করা হয়েছিল। এই প্রকল্পের কয়েকটি উল্লেখযোগ্য সাফল্যের মধ্যে রয়েছে:
- সুইফট ভাষায় ভাষা-সংহত বিবিধ প্রোগ্রামিং যুক্ত করা হয়েছে। অফিসিয়াল সুইফ্ট সংকলকটিতে এই কাজটি অব্যাহত রয়েছে।
- একটি পরিবর্তনীয়-মান-শব্দার্থক-ভিত্তিক গভীর শেখার এপিআই বিকাশ করেছে
- বিভিন্ন গভীর শিক্ষার শাখা থেকে 30 টিরও বেশি মডেল সহ একটি মডেল গার্ডেনের বিকাশকে উত্সাহিত করেছেন।
- সক্ষম তাত্পর্যপূর্ণ গবেষণা যা 3 ডি মোশন ট্র্যাকিং এবং এর বাইরেও সম্ভাব্য গ্রাফিকাল মডেলের সাথে গভীর শিক্ষার সমন্বয় করে।
- একটি জিপিইউ + সিপিইউ রানটাইম সাপোর্টিং পিএম্যাপের একটি (n প্রায়) খাঁটি-সুইফ্ট প্রোটোটাইপ চালিত।
- সক্রিয় বিকাশের অধীনে অব্যাহত একাধিক ওপেন সোর্স পক্ষের প্রচেষ্টা বন্ধ করে দিন:
- পাইথনকিট : সুইফটের সাথে পাইথন ইন্টারঅ্যাপেরিবিলিটি।
- swift-jupyter : জুপিটার নোটবুকের মধ্যে সুইফটের ব্যবহার সক্ষম করে।
- সুইফ্ট -বেঞ্চমার্ক : সুইফ্ট কোডের জন্য একটি শক্তিশালী বেঞ্চমার্কিং স্যুট সরবরাহ করে।
- অন্যান্য বেশ কয়েকটি ওপেন সোর্স প্রচেষ্টা বন্ধ করে দিন:
- পেঙ্গুইন : সমান্তরাল প্রোগ্রামিং, ডেটা স্ট্রাকচার, গ্রাফ অ্যালগরিদম এবং আরও অনেক কিছু।
- টেনার্স পুরোপুরি ফিট : টেনসর আকৃতির মিলের স্থির বিশ্লেষণ।
- সুইফট-বিবর্তন প্রস্তাবগুলি প্রস্তাবিত এবং প্রয়োগ করা হয়:
এই সাইটটি আরও আপডেট পাবেন না। এপিআই ডকুমেন্টেশন এবং বাইনারি ডাউনলোডগুলি অ্যাক্সেসযোগ্য পাশাপাশি ওপেন ডিজাইন পর্যালোচনা সভার রেকর্ডিংগুলিতে অবিরত থাকবে।
সুইফট
সুইফট একটি ওপেন সোর্স সাধারণ-উদ্দেশ্য প্রোগ্রামিং ভাষা, যার একটি বৃহত এবং ক্রমবর্ধমান ব্যবহারকারী বেস রয়েছে। আমরা সুইফটকে বেছে নিয়েছি কারণ এটির একটি উন্মুক্ত ভাষার নকশা প্রক্রিয়া রয়েছে এবং নির্দিষ্ট প্রযুক্তিগত কারণে " কেন টেনসরফ্লো জন্য স্যুইফ্ট টেনসরফ্লো " নথিতে বিশদ রয়েছে। আমরা ধরে নিই যে বেশিরভাগ পাঠক এটির সাথে অপরিচিত, তাই আমরা এখানে এটি সম্পর্কে কিছু অতিরিক্ত গুরুত্বপূর্ণ বিষয়গুলি সংক্ষেপে স্পর্শ করব।
২০১০ সালে সুইফটের বিকাশ শুরু হয়েছিল এবং একাডেমিক অভিনবত্বের চেষ্টা বা ধর্মীয়ভাবে প্রোগ্রামিং পদ্ধতির প্রচারের পরিবর্তে প্রোগ্রামিং ল্যাঙ্গুয়েজ ডিজাইনের সেরা অনুশীলনকে এক সিস্টেমে আনার লক্ষ্য ছিল। ফলস্বরূপ, এটি একক সিস্টেমে বহু-দৃষ্টিকোণ বিকাশকে (যেমন কার্যকরী, ওওপি, জেনেরিক, প্রসেসরিয়াল ইত্যাদি) সমর্থন করে এবং একাডেমিক ভাষা থেকে অনেক সুপরিচিত ধারণাটি নিয়ে আসে (উদাহরণস্বরূপ প্যাটার্ন মেলানো , বীজগণিত সম্পর্কিত ডেটা এবং ধরণের শ্রেণি) সামনের দিকে। বিকাশকারীদের তাদের সমস্ত কোডটি সুইফটে নতুন করে লেখার জন্য দৃ strongly়ভাবে উত্সাহিত করার পরিবর্তে, এটি অন্য ভাষার সাথে আন্তঃব্যবহারের দিকে মনোনিবেশ করে যেমন, আপনাকে সরাসরি সি হেডার ফাইলগুলি আমদানি করতে এবং এফএফআই ছাড়াই তাদের ব্যবহার করতে দেয় এবং (এখন) মোড়ক ছাড়াই পাইথন এপিআই ব্যবহার করার ক্ষমতা রাখে ।
শিখতে ও ব্যবহারে সহজ হওয়াতে ফোকাস সহ, নিম্ন-স্তরের সিস্টেম প্রোগ্রামিং থেকে উচ্চ স্তরের স্ক্রিপ্টিং পর্যন্ত সমস্ত পথে বিস্তৃত হওয়ার শ্রুতিমধুর লক্ষ্য রয়েছে। যেহেতু সুইফটকে শিখতে এবং ব্যবহার করা সহজ হওয়া দরকার তবে শক্তিশালীও তাই জটিলতার প্রগতিশীল প্রকাশের নীতির উপর নির্ভর করে, যা আক্রমণাত্মকভাবে সেই জটিলতা থেকে উপকৃত ব্যক্তিদের উপর জটিলতার ব্যয়কে কারণ হিসাবে চিহ্নিত করে। উচ্চ কার্যকারিতার সাথে মিলিত "স্ক্রিপ্টিং ভাষার অনুভূতি" মেশিন শেখার জন্য খুব দরকারী।
সুইফটের ডিজাইনের একটি চূড়ান্ত প্রাসঙ্গিক দিকটি হল যে সুইফট ভাষার বেশিরভাগ অংশই এটির স্ট্যান্ডার্ড লাইব্রেরিতে প্রয়োগ করা হয়। ইন্ট এবং বুলের মতো "বিল্টিন" প্রকারগুলি আসলে স্ট্যান্ডার্ড লাইব্রেরিতে সংজ্ঞায়িত স্ট্রাক্ট যা ম্যাজিক প্রকার এবং ক্রিয়াকলাপগুলিকে আবৃত করে। এর মতো, কখনও কখনও আমরা রসিকতা করি যে সুইফটটি কেবল "এলএলভিএমের জন্য সিনট্যাকটিক চিনি"।
আরও অনেক কিছু আছে যা সুইফ্ট সম্পর্কে শীতল এবং অনলাইনে উপলব্ধ প্রচুর পরিমাণে সামগ্রী। আপনি যদি সাধারণ সুইফ্ট প্রোগ্রামিং ধারণাগুলি সম্পর্কে আরও জানতে আগ্রহী হন, শুরু করতে এখানে কয়েকটি লিঙ্ক দেওয়া হল:
- একটি সুইফট ট্যুরটি উচ্চ স্তরের সিনট্যাক্স এবং সুইফটের অনুভূতিগুলির একটি স্কিম্ম ট্যুর এবং এটি বৃহত্তর "দ্য সুইফ্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ" বইয়ের অংশ।
- " স্যুইফ্টে মান ধরণের সাথে আরও ভাল অ্যাপ্লিকেশন তৈরি করা " [ ইউটিউব ] - তে ব্যাখ্যা করা হয়েছে বলে মূল্য শব্দার্থশক্তিগুলি শক্তিশালী এবং সুইফট কোডে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে।
- সুইফট ক্লাসিক ওওপি সমর্থন করে, তবে হাস্কেল টাইপ সিস্টেম থেকে ধারণাগুলি মানিয়েছে। এটি " প্রোটোকল-ওরিয়েন্টেড প্রোগ্রামিং ইন সুইফ্ট " [ ইউটিউব ] এ ব্যাখ্যা করা হয়েছে।
একটি সতর্কতা: সুইফ্ট তার প্রথম বছরগুলিতে দ্রুত বিকশিত হয়েছিল, তাই আপনার সুইফ্ট 3 (2016 সালে প্রকাশিত) এর আগে যে কোনও বিষয়ে সতর্ক হওয়া উচিত।
কেন টেনসরফ্লো জন্য সুইফ্ট?
টেনসরফ্লো ফর সুইট মেশিন লার্নিং মডেলগুলি বিকাশের একটি নতুন উপায়। এটি আপনাকে সুইফার প্রোগ্রামিং ভাষায় সরাসরি সংহত টেনসরফ্লোয়ের শক্তি দেয়। আমরা বিশ্বাস করি যে মেশিন লার্নিং দৃষ্টান্তগুলি এতটা গুরুত্বপূর্ণ যে তারা প্রথম-শ্রেণীর ভাষা এবং সংকলক সমর্থনের প্রাপ্য।
মেশিন লার্নিংয়ের একটি মৌলিক আদিম হ'ল গ্রেডিয়েন্ট-ভিত্তিক অপ্টিমাইজেশন: পরামিতিগুলি অনুকূল করার জন্য কম্পিউটিং ফাংশন ডেরিভেটিভস। টেনসরফ্লো জন্য সুইফ্টের সাহায্যে, আপনি gradient(of:)
মতো ডিফারেন্সিয়াল অপারেটরগুলি ব্যবহার করে সহজেই ফাংশনগুলি পৃথক করতে পারেন বা পদ্ধতি gradient(in:)
কল করে পুরো মডেলের প্রতি শ্রদ্ধার সাথে আলাদা করতে পারেন। এই Tensor
এপিআইগুলি কেবল Tensor
সম্পর্কিত সম্পর্কিত ধারণাগুলির জন্যই উপলভ্য নয় all এগুলি সমস্ত ধরণের জন্য সাধারণ করা হয় যা Float
, Double
, সিমডি ভেক্টর এবং আপনার নিজস্ব ডেটা স্ট্রাকচার সহ Differentiable
প্রোটোকলের সাথে মানিয়ে যায়।
// 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
ডেরিভেটিভগুলি ছাড়িয়ে, টেনসরফ্লো প্রকল্পের সুইফটটি ব্যবহারকারীদের আরও উত্পাদনশীল করার জন্য একটি পরিশীলিত সরঞ্জামচয়ন নিয়ে আসে। আপনি একটি বৃহত্তর নোটবুকটিতে ইন্টারফেসিয়ালভাবে সুইফ্ট চালনা করতে পারেন এবং একটি আধুনিক গভীর শেখার লাইব্রেরির বিশাল এপিআই পৃষ্ঠটি অন্বেষণে সহায়তা করতে সহায়ক স্বতঃপূরণ পরামর্শ পেতে পারেন। আপনি ঠিক কয়েক সেকেন্ডের মধ্যে আপনার ব্রাউজারে শুরু করতে পারেন!
টেনসরফ্লো এর জন্য সুইফটে স্থানান্তরিত করা সুইফটের শক্তিশালী পাইথন সংহতকরণের জন্য সত্যই সহজ ধন্যবাদ thanks আপনি ক্রমবর্ধমানভাবে আপনার পাইথন কোডটি স্থানান্তর করতে পারেন (বা আপনার পছন্দের পাইথন লাইব্রেরি ব্যবহার করা চালিয়ে যেতে পারেন) কারণ আপনি সহজেই একটি পরিচিত বাক্য গঠন সহ আপনার প্রিয় পাইথন লাইব্রেরি কল করতে পারেন:
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!