টেনসরফ্লো, অজগরকে কেন বেছে নেওয়া ভাষা বলা হয়েছিল?


143

আমি সম্প্রতি গভীর শিখন এবং অন্যান্য এমএল কৌশলগুলি অধ্যয়ন শুরু করেছি এবং আমি এমন ফ্রেমওয়ার্কগুলি অনুসন্ধান করতে শুরু করেছি যা নেট তৈরির প্রক্রিয়াটি সহজ করে এবং এটি প্রশিক্ষণ দেয়, তারপরে আমি টেনসরফ্লোকে পেয়েছি, ক্ষেত্রটিতে সামান্য অভিজ্ঞতা রয়েছে, আমার কাছে মনে হয় গতি একটি গভীর শিক্ষার সাথে যদি কাজ করে তবে আরও বড় একটি এমএল সিস্টেম তৈরির বড় ফ্যাক্টর, তবে টেনসরফ্লো তৈরি করতে গুগল পাইথনকে কেন বেছে নিয়েছিল? সংকলন করা যায় এবং ব্যাখ্যা করা যায় না এমন ভাষায় এটি তৈরি করা কি ভাল না?

মেশিন লার্নিংয়ের জন্য সি ++ এর মতো ভাষার মাধ্যমে পাইথন ব্যবহারের সুবিধা কী কী?


2
গৌণ নিটপিক: সংকলন এবং ব্যাখ্যা বিপরীত নয়। তদ্ব্যতীত, যে কোনও প্রোগ্রামিং ভাষা সংকলক বা দোভাষী বা উভয়কেই প্রয়োগ করা যেতে পারে। সফটওয়্যার ইঞ্জিনিয়ারিংয়ের পার্থক্য সম্পর্কে একটি দুর্দান্ত উত্তর রয়েছে
বিট্রি

উত্তর:


240

টেনসরফ্লো সম্পর্কে উপলব্ধি করার জন্য সবচেয়ে গুরুত্বপূর্ণ বিষয়টি হ'ল, বেশিরভাগ অংশের জন্য মূলটি পাইথনে লেখা হয়নি : এটি অত্যন্ত-অনুকূলিত সি ++ এবং সিউডিএ (প্রোগ্রামিং জিপিইউগুলির জন্য এনভিডিয়া ভাষা) এর সংমিশ্রণে রচিত। এর বেশিরভাগ ক্ষেত্রে ঘটে যায়, ইগেন (একটি উচ্চ-পারফরম্যান্স সি ++ এবং সিউডিএ সংখ্যাসূচক গ্রন্থাগার) এবং এনভিডিয়া সিউডিএনএন ( এনভিডিয়া জিপিইউগুলির জন্য একটি অনুকূলিত ডিএনএন গ্রন্থাগার , যেমন কনভোলিউশনগুলির জন্য ) ব্যবহার করে।

টেনসরফ্লো এর মডেল হ'ল প্রোগ্রামার মডেলটি প্রকাশ করতে "কিছু ভাষা" (সম্ভবত পাইথন!) ব্যবহার করে। টেনসরফ্লো কনস্ট্রাক্টসগুলিতে লিখিত এই মডেল যেমন:

h1 = tf.nn.relu(tf.matmul(l1, W1) + b1)
h2 = ...

পাইথন চালিত হলে আসলে মৃত্যুদন্ড কার্যকর করা হয় না। পরিবর্তে, আসলে যা তৈরি হয়েছে তা হ'ল একটি ডেটাফ্লো গ্রাফ যা নির্দিষ্ট ইনপুট নিতে, নির্দিষ্ট ক্রিয়াকলাপ প্রয়োগ করতে, ফলাফলকে অন্যান্য ক্রিয়াকলাপের ইনপুট হিসাবে সরবরাহ করে এবং এই জাতীয় কথা বলে। এই মডেলটি দ্রুত সি ++ কোড দ্বারা কার্যকর করা হয় এবং বেশিরভাগ অংশের জন্য, অপারেশনের মধ্যে যাওয়া ডেটা পাইথন কোডে কখনও অনুলিপি করা হয় না

তারপরে প্রোগ্রামার নোডগুলিতে টান দিয়ে এই মডেলটির সম্পাদন "চালিত করে" - প্রশিক্ষণের জন্য, সাধারণত পাইথনে এবং পরিবেশন করার জন্য, কখনও কখনও পাইথন এবং কখনও কখনও কাঁচা সি ++ এ:

sess.run(eval_results)

এই একটি পাইথন (বা সি ++ ফাংশন কল) সি ++ তে একটি প্রক্রিয়াকরণ কল ব্যবহার করে বা আরপিসি বিতরণকৃত সংস্করণের জন্য সি ++ টেনসরফ্লো সার্ভারে এটি চালানোর জন্য বলার জন্য, এবং তারপরে ফলাফলগুলি অনুলিপি করে।

সুতরাং, সেই কথার সাথে, আসুন প্রশ্নটির পুনরায় বাক্যটি তৈরি করুন: মডেলগুলির প্রশিক্ষণ প্রকাশ এবং নিয়ন্ত্রণের জন্য টেনসরফ্লো কেন পাইথনকে প্রথম স্বীকৃত ভাষা হিসাবে বেছে নিয়েছিল?

এর উত্তরটি সহজ: পাইথন সম্ভবত বিপুল পরিমাণে ডেটা বিজ্ঞানী এবং মেশিন লার্নিং বিশেষজ্ঞের পক্ষে সবচেয়ে আরামদায়ক ভাষা যা একটি সি ++ ব্যাকএন্ডকে একীভূত করতে এবং নিয়ন্ত্রণ করতেও সহজ, পাশাপাশি সাধারণ এবং অভ্যন্তরীণ এবং বাইরের উভয় ক্ষেত্রেই বহুল ব্যবহৃত গুগল, এবং মুক্ত উত্স। টেনসরফ্লো-এর বেসিক মডেলটি দিয়ে, পাইথনের অভিনয় এতটা গুরুত্বপূর্ণ নয়, এটি ছিল প্রাকৃতিক ফিট। এটি একটি বিশাল প্লাস যে NumPy এটা সহজ পাইথন মধ্যে প্রাক প্রক্রিয়াকরণ করতে তোলে - এছাড়াও উচ্চ কার্যকারিতা সাথে - সত্যিকারের CPU- র ভারী জিনিসের জন্য TensorFlow করার জন্য এটা খাওয়ানোর আগে।

মডেলটি প্রকাশের ক্ষেত্রে এটি ব্যবহার করার সময় ব্যবহৃত হয় না এমন ভাব প্রকাশের ক্ষেত্রেও অনেকগুলি জটিলতা রয়েছে - আকারের অনুমিতি (উদাহরণস্বরূপ, আপনি যদি ম্যাটমুল (এ, বি) করেন তবে ফলাফলের ডেটার আকারটি কী?) এবং স্বয়ংক্রিয় গ্রেডিয়েন্ট গণনা। পাইথনের সেই ব্যক্তিকে প্রকাশ করতে পেরে ভাল লাগল, যদিও আমি মনে করি দীর্ঘমেয়াদে তারা সম্ভবত অন্যান্য ভাষা যুক্ত করার জন্য সি ++ ব্যাকএন্ডে চলে যাবে।

(আশা, অবশ্যই, ভবিষ্যতে মডেলগুলি তৈরি এবং প্রকাশের জন্য অন্যান্য ভাষাগুলিকে সমর্থন করা several এটি বেশ কয়েকটি অন্যান্য ভাষা ব্যবহার করে অনুমান চালানো ইতিমধ্যে সোজা - সি ++ এখন কাজ করে, ফেসবুকের কেউ গো বাঁধাই করেছে যে আমরা এখন পর্যালোচনা করছি ইত্যাদি)


1
It's already quite straightforward to run inference using several other languagesপ্রোলোগ প্রোগ্রামার হওয়ার ক্ষেত্রে আপনি কীভাবে 'অনুমান' সংজ্ঞা দিচ্ছেন এটি আমার পক্ষে উপযুক্ত নয়; মনে হচ্ছে জায়গাটার বাইরে শব্দ আছে।
গাই কোডার

1
মডেলটির সামনের ফরোয়ার্ড পাস চলছে। এটি ডেটা বনাম প্রশিক্ষণে প্রয়োগ করা।
ডিজি

অনুমান আকারে সম্মানের সাথে। আমি কেবলমাত্র ব্যবহারের জন্য শেখার জন্য কিছু নিউরাল নেটওয়ার্ককে স্ট্যাটিকালি টাইপ করা ভাষায় রূপান্তর করছি এবং পাইটিহনে হাঁসের টাইপিং কোডটির সেই অংশটি অবশ্যই লিখতে অনেক সহজ করে দিয়েছে। ফিলিপ দিকে, টাইপগুলি সহ পাইথন কোড লেখার সময় পাইটিহনকে চালানোর আগে ধরণগুলি সঠিকভাবে পেতে শেখার সময় এটি আরও শক্ত হয়ে যায়। এফ # হ'ল অন্যান্য ভাষার চেয়ে পাইটিহন ব্যবহার করে আমি আরও অনেক রান টাইম ত্রুটি দেখতে পাচ্ছি। উত্তরে হাঁসের টাইপিংয়ের বিষয়টি লক্ষ্যণীয়।
গাই কোডার

2
যদিও এটি সত্য, আমি মনে করি পাইথনের টাইপিং একটি পরোক্ষ কারণ ছিল। গুগলে সাধারণত ব্যবহৃত ভাষাগুলির মধ্যে --- কোওড়া.com/… --- পাইথন গড় মেশিন লার্নিং পিএইচডি করার সেরা ম্যাচ কেবলমাত্র অন্যান্য আসল পছন্দটি হ'ল সি ++ (লুয়া, টর্চের ভাষাটি ব্যবহার করে এমন অনেক লোক আমি জানি না), এবং সি ++ এমএল টুলবক্সের আরাম অঞ্চল থেকে বেশ দূরে। অনেকগুলি এমএল লোক মাতলাব ব্যাকগ্রাউন্ড থেকে আসে, যার সাথে নাম্প্র ক্রম জনপ্রিয়। হাঁসের টাইপিং সম্ভবত অন্তর্নিহিত জনপ্রিয়তা অবশ্যই, তবে এটি আমার সুযোগের বাইরে।
dga

ধন্যবাদ, চমৎকার সংক্ষিপ্তসার। গাই কোডার --- নাটকটিতে "অনুমান" অনুধাবন হিসাবে, পরিসংখ্যানগত অনুক্রমের উপর উইকিপিডিয়া নিবন্ধটি দেখুন । এটি প্রোলোগ দ্বারা সম্পাদিত ডিডাকটিভ টাইপের বিপরীতে ইন্ডাকটিভ ইনফেরেন্স।
বব কার্পেন্টার

35

টিএফ পাইথনে লেখা নেই। এটি সি ++ (এবং উচ্চ-পারফরম্যান্ট সংখ্যাসূচক গ্রন্থাগার এবং সিউডিএ কোড ব্যবহার করে) এ লিখিত এবং আপনি তাদের গিথুব দেখে এটি পরীক্ষা করতে পারেন । সুতরাং মূলটি পাইথন নয়, টিএফ আরও অনেকগুলি ভাষায় ইন্টারফেস সরবরাহ করে ( পাইথন, সি ++, জাভা, গো )

এখানে চিত্র বর্ণনা লিখুন

আপনি যদি কোনও ডেটা বিশ্লেষণ জগত থেকে এসে থাকেন তবে আপনি এটিকে নপীর মতো (পাইথনে লেখা নেই, তবে পাইথনকে একটি ইন্টারফেস সরবরাহ করে) বা আপনি যদি ওয়েব-বিকাশকারী হন - এটি একটি ডেটাবেস হিসাবে চিন্তা করুন (পোস্টগ্রিসকিউএল, মাইএসকিউএল, যা জাভা, পাইথন, পিএইচপি থেকে প্রার্থনা করা যেতে পারে)


পাইথন ফ্রন্টএন্ড (যে ভাষায় লোকেরা টিএফ-তে মডেল লেখেন) বহু কারণে সর্বাধিক জনপ্রিয় । আমার মতে মূল কারণটি historicalতিহাসিক: বেশিরভাগ এমএল ব্যবহারকারী ইতিমধ্যে এটি ব্যবহার করেছেন (অন্য একটি জনপ্রিয় পছন্দ আর) সুতরাং যদি আপনি অজগরকে কোনও ইন্টারফেস সরবরাহ না করেন তবে আপনার গ্রন্থাগারটি সম্ভবত অস্পষ্ট হয়ে পড়েছে।


তবে পাইথনে লেখার অর্থ এই নয় যে আপনার মডেলটি অজগরে মৃত্যুদন্ড কার্যকর করা হয়েছে। বিপরীতে, আপনি যদি নিজের মডেলটি সঠিকভাবে লিখে থাকেন তবে টিএফ গ্রাফের মূল্যায়নের সময় পাইথন কখনই কার্যকর করা হয় না ( tf.py_func () ব্যতীত , যা ডিবাগিংয়ের জন্য বিদ্যমান এবং বাস্তব মডেলটিতে এড়ানো উচিত কারণ এটি কার্যকর করা হয়েছিল) পাইথনের পাশে)।

এটি উদাহরণস্বরূপ থেকে পৃথক। উদাহরণস্বরূপ, যদি আপনি np.linalg.eig(np.matmul(A, np.transpose(A))(যা হয় eig(AA')), অপারেশনটি কিছু দ্রুত ভাষায় (সি ++ বা ফোর্টারান) ট্রান্সপোসেট গণনা করবে, এটি অজগরকে ফিরিয়ে দেবে, এটিকে অজগর থেকে একসাথে নিয়ে যাবে এবং কিছু দ্রুত ভাষায় একটি গুণ গুণবে এবং এটিকে ফিরিয়ে দেবে অজগর, তারপরে ইগেনভ্যালুগুলি গণনা করুন এবং এটিকে পাইথনে ফিরিয়ে দিন। তথাপি ম্যাটমুল এবং আইগের মতো ব্যয়বহুল ক্রিয়াকলাপগুলি দক্ষতার সাথে গণনা করা হয়, আপনি এখনও ফলাফলটি অজগরকে ফিরে এবং বল প্রয়োগ করে সময় হারাবেন। টিএফ এটি করে না , একবার আপনি গ্রাফটি সংজ্ঞায়িত করলেন আপনার টেনারগুলি প্রবাহটি অজগর নয়, সি ++ / সিউডিএ / অন্য কিছুতে প্রবাহিত করবে।


এই প্রসঙ্গে আমার ব্লগ পোস্টটি আগ্রহী হতে পারে: blog.ephorie.de/why-r-for-data-s
ज्ञान-

4

পাইথন আপনাকে সি এবং সি ++ ব্যবহার করে এক্সটেনশন মডিউল তৈরি করতে দেয়, নেটিভ কোডের সাথে ইন্টারফেস করে এবং পাইথন আপনাকে যে সুবিধা দেয় তা পেতে পারে।

টেনসরফ্লো পাইথন ব্যবহার করে, হ্যাঁ, তবে এতে প্রচুর পরিমাণে সি ++ রয়েছে

এটি পাইথনের সাথে কম মানুষের চিন্তার ওভারহেড নিয়ে পরীক্ষার জন্য একটি সহজ ইন্টারফেসের অনুমতি দেয় এবং সি ++ এর সবচেয়ে গুরুত্বপূর্ণ অংশগুলিতে প্রোগ্রামিং করে পারফরম্যান্স যুক্ত করে।


0

টেনসরফ্লো সি ++ এর অভ্যন্তরে আপনি এখানে যে সর্বশেষ অনুপাতটি পরীক্ষা করতে পারবেন তা কোডের ~ 50%, এবং পাইথন ~ 40% কোড নেয়।

সি ++ এবং পাইথন উভয়ই গুগলের সরকারী ভাষা তাই এটি কেন এমন হয় তা নিয়ে অবাক হওয়ার কিছু নেই। সি ++ এবং পাইথন উপস্থিত থাকলে আমাকে যদি দ্রুত প্রতিরোধ সরবরাহ করতে হয় ...

সি ++ গণনার বীজগণিতের ভিতরে থাকে এবং পাইথন পরীক্ষার জন্য অন্য সমস্ত কিছুর জন্য ব্যবহৃত হয়। আজ পরীক্ষাটি সর্বব্যাপী কী তা জেনে অবাক হওয়ার কিছু নেই যে পাইথন কোড টিএফ-তে কেন এতটা অবদান রাখে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.