تنسورفلو چیست ؟
تنسورفلو (TensorFlow)، یک کتابخانه متن باز مبتنی بر پایتون برای انجام محاسبات عددی است. این کتابخانه، یادگیری ماشین را ساده تر و سریع تر می کند. برای آشنایی بیشتر با این کتابخانه، با ما در این مقاله از مجله هم رویش همراه باشید.
یادگیری ماشین، یک رشته پیچیده است. اما پیاده سازی مدل های یادگیری ماشین، به لطف فریمورک های موجود در این حوزه، نظیر تنسورفلو که توسط گوگل طراحی شده است، بسیار ساده تر از چیزی است که به نظر می آید. به کمک تنسورفلو، فرایند جمع آوری داده ها، آموزش مدل ها، ارائه پیش بینی ها و اصلاح نتایج آتی، به مراتب ساده تر می گردد.
تنسورفلو، که توسط تیم Google Brain ایجاد شده است، یک کتابخانه متن باز برای انجام محاسبات عددی و یادگیری ماشین در ابعاد وسیع است. این کتابخانه، مجموعه ای از مدل ها و الگوریتم های یادگیری ماشین و یادگیری عمیق (که با عنوان شبکه های عصبی شناخته می شوند) را با هم ادغام کرده و آنها را به شکلی مفید و قابل استفاده تبدیل می کند. تنسورفلو از زبان پایتون برای فراهم کردن یک API مناسب به جهت ساخت برنامه هایی با این فریمورک استفاده می کند، در حالی که برای اجرای آن برنامه ها، از زبان ++C استفاده می کند.
هم رویش منتشر کرده است:
آموزش شبکه عصبی مصنوعی -- از صفر به زبان ساده
تنسورفلو می تواند شبکه های عصبی عمیق را به منظور دسته بندی ارقام دست نویس، تشخیص تصویر، تعبیه کلمات، شبکه های عصبی بازگشتی، مدل های دنباله به دنباله برای ترجمهی ماشین، پردازش زبان طبیعی و شبیه سازی های مبتنی بر معادلات دیفرانسیل جزئی، تعلیم داده و اجرا کند. از همهی این ها بهتر این که تنسورفلو، از پیش بینی تولید در مقیاس، با همان مدل هایی که برای آموزش استفاده کرده، پشتیبانی می کند.
پیش از این آموزش آموزش تنسورفلو (پیاده سازی شبکه های عصبی با TensorFlow) در همرویش منتشر شد. فیلم معرفی این آموزش را در زیر میتوانید مشاهده کنید:
دریافت کامل بسته آموزش پیاده سازی شبکههای عصبی با تنسورفلو
تنسورفلو چگونه کار می کند
تنسورفلو این امکان را به توسعه دهندکان می دهد که گراف های جریان داده بسازند. این گراف ها، ساختارهایی هستند که نحوهی حرکت داده ها در طول یک گراف (graph) یا مجموعه ای از گره های پردازشی را توصیف می کنند. هر گره در گراف، نشان دهندهی یک عملیات ریاضیاتی است، و هر اتصال یا لبه بین گره ها، یک آرایه چندبعدی از داده ها، یا همان تنسور است.
تنسورفلو همهی این ها را بر اساس زبان پایتون برای برنامه نویس فراهم می کند. یادگیری و کار با زبان پایتون، بسیار ساده است و راهکارهای مناسب و ساده ای برای بیان نحوهی ترکیب انتزاعات سطح بالا (high-level abstractions) ارائه می دهد. گره ها و تنسورها در تنسورفلو، اشیا پایتونی هستند، و برنامه های تنسورفلو، خود برنامه هایی پایتونی به شمار می روند.
با این حال، عملیات های ریاضیاتی واقعی، در پایتون انجام نمی شوند. کتابخانه هایی که از طریق تنسورفلو در دسترس هستند، به زبان ++C نوشته شده اند. زبان پایتون، فقط ترافیک بین مؤلفه های مختلف را جهت دهی و هدایت می کند و انتزاعات برنامه نویسی سطح بالا را برای اتصال آنها به یکدیگر فراهم می کند.
برنامه های تنسورفلو را می توان بر روی اکثر دستگاه ها و پلتفرم های مدنظر اجرا کرد:
بر روی یک ماشین محلی، خوشه ای در سرور ابری، دستگاه های اندرویدی و iOS، پردازنده های مرکزی (CPU) و پردازنده های گرافیکی (GPU). اگر از ابر اختصاصی گوگل استفاده می کنید، می توانید تنسورفلو را بر روی واحد پردازش تنسورفلو (TensorFlow Processing Unit) یا به اختصار TPU که توسط گوگل سفارشی سازی شده، اجرا کنید. این کار باعث شتاب گیری و افزایش سرعت پردازش می شود. مدل های نهایی ایجاد شده با تنسورفلو، بر روی اکثر دستگاه هایی که به منظور پیش بینی مورد استفاده قرار می گیرند، قابل اجرا هستند.
تنسورفلو 2.0، که در اکتبر 2019 منتشر شد، با توجه به بازخوردهایی که از کاربران دریافت شد، از بسیاری جهات مورد بازبینی و اصلاح قرار گرفت. این بازبینی ها در نسخهی منتشر شده، منجر به ساده تر شدن کار با این فریمورک (به عنوان مثال با استفاده از keras api برای آموزش مدل ها) و کارامدتر شدن آن گردید. به لطف یک API جدید، انجام آموزش توزیع شده ساده تر شده و با پشتیبانی از تنسورفلو لایت، امکان توسعه و پیاده سازی مدل ها بر روی طیف وسیع تری از پلتفرم ها فراهم گشته است. با این حال، باید کدهای نوشته شده بر اساس نسخه های قبلی تنسورفلو را از نو بنویسید، گاهی با اعمال تغییرات جزئی و گاه با بازنویسی کامل. تنها از این راه می توان از ویژگی ها و مزایای تنسورفلو 2.0 حداکثر بهره را برد.
مزایای تنسورفلو
بزرگترین مزیتی که تنسورفلو برای توسعهی یادگیری ماشین به ارمغان آورده است، انتزاع (abstraction) است. توسعه دهنده می تواند بجای پرداختن جزئیات زیربنایی و ریزه کاری های پیاده سازی الگوریتم ها، یا کشف راه های مناسب برای وصل کردن خروجی یک تابع به ورودی تابعی دیگر، بر منطق کلی برنامه تمرکز کند. تنسورفلو در پشت صحنه کار، به جزئیات رسیدگی می کند!
هم رویش منتشر کرده است:
آموزش یادگیری ماشین از صفر --- یادگیری سریع و آسان
تنسورفلو امکانات و تسهیلات مضاعفی را برای آن دسته از توسعه دهندگان که نیاز به اشکال زدایی و بررسی برنامه های تنسورفلو دارند، فراهم می کند. حالت اجرای مشتاقانه (eager execution) این امکان را به شما می دهد تا بجای اینکه کل گراف را به عنوان یک شیء واحد بسازید و آنرا یکجا ارزیابی کنید، هر عملیات گراف را جداگانه و به صورت شفاف، ارزیابی و اصلاح کنید. ابزار مصور تنسوربورد (TensorBoard) نیز به شما این امکان را می دهد که نحوهی اجرای گراف ها را از طریق یک داشبورد تعاملی مبتنی بر وب، مشاهده و بررسی کنید.
تنسورفلو همچنین از حمایت و پشتیبانی یک واحد تجاری مشهور در گوگل برخوردار است و مزایای فراوانی از این موضوع می برد. گوگل، نه تنها به روند توسعه این پروژه سرعت بخشیده است، بلکه قابلیت ها و امکانات قابل توجه زیادی برای تنسورفلو ایجاد کرده است که گسترش و استفاده از آن را ساده تر می کند. برخی از این امکانات عبارتند از: سیلیکون TPU (واحد پردازش تنسور) برای بهبود سرعت عملکرد در ابر گوگل (که پیشتر به آن اشاره شد)، یک مرکز آنلاین (online hub) برای به اشتراک گذاری مدل هایی که با این فریمورک ساخته شده اند، امکان تعامل با این فریمورک در قالب مرورگر (in-browser) و بستر تلفن همراه (mobile-friendly)، و بسیاری موارد دیگر.
یک نکته:
برخی جزئیات در پیاده سازی تنسورفلو، امکان دستیابی به نتایج کاملا قطعی از آموزش مدل ها را برای برخی کارهای آموزشی دشوار می کند. چرا که گاهی اوقات، مدلی که روی یک سیستم آموزش داده شده باشد، با مدلی که روی یک سیستم دیگر آموزش دیده، کمی متفاوت خواهد بود؛ حتی اگر داده های ورودی به هر دو سیستم، کاملا یکسان باشد. برای فهم دلایل این موضوع، می توانید نگاهی به ” اعداد تصادفی چگونه و کجا سیدبندی می شوند (how random numbers are seeded and where) ” یا ” رفتارهای غیرقطعی هنگام استفاده از پردازنده گرافیکی (certain non-deterministic behaviors when using GPUs) ” بیندازید. با این اوصاف، می توان روی این مسائل بیشتر کار کرد و تیم تنسورفلو نیز در حال بررسی امکان کنترل بیشتر به منظور تاثیر بر قطعیت در جریان کار است.
تنسورفلو و رقبا
تنسورفلو، با چندین فریمورک دیگر در حوزهی یادگیری ماشین، در حال رقابت است. PyTorch، CNTK و MXNet ، سه نمونه از اصلی ترین رقبای آن هستند که خدمات تقریبا مشابهی در حوزهی یادگیری ماشین ارائه می دهند. در ادامه، به این مطلب اشاره می کنیم که هر کدام از این فریمورک ها، در مقایسه با تنسورفلو، چه زمانی دست بالاتر را دارند و چه زمانی در مقابل آن، حرفی برای گفتن ندارند!!
PyTorch :
علاوه بر این که با زبان پایتون نوشته شده است، شباهت های بسیاری با تنسورفلو دارد، نظیر برخورداری از قطعات شتاب دهنده سخت افزاری، یک مدل توسعه تعاملی که امکان اجرا در حین طراحی را فراهم می کند، و مؤلفه های مفید دیگری که از قبل برای آن درنظر گرفته شده است. به طور کلی، PyTorch برای توسعهی سریع پروژه هایی که باید در مدت زمان کوتاهی راه اندازی شوند، انتخاب بهتری است، اما تنسورفلو در پروژه های بزرگتر که روندکاری پیچیده تری هم دارند، برنده این رقابت خواهد بود.
CNTK:
این جعبه ابزار شناختی مایکروسافت، همانند تنسورفلو، از یک ساختار نموداری (گراف) برای توصیف جریان داده ها استفاده می کند، اما تمرکز آن، بیشتر بر روی ایجاد شبکه های عصبی یادگیری عمیق است. CNTK، بسیاری از کارهای مرتبط با شبکه عصبی را سریع تر مدیریت کند و دارای مجموعه ای گسترده تر از API هاست (پایتون، #C++، C، جاوا). اما در حال حاضر، یادگیری یا به کار گیری این فریمورک، به سادگی تنسورفلو نیست.
Apache MXNet:
این فریمورک که از سوی آمازون به عنوان اصلی ترین فریمورک یادگیری عمیق در خدمات اینترنتی آمازون (AWS) پذیرفته شده است، می تواند تقریبا به صورت خطی، در چندین پردازنده گرافیکی (GPU) و چندین ماشین، مورد استفاده قرار بگیرد. همچنین از طیف وسیعی از زبان های API، نظیر پایتون، C++، Scala، R، JavaScript، Julia، Perl و Go پشتیبانی می کند. با این وجود، کار با API های بومی و اصلی آن، به اندازهی تنسورفلو خوشایند نیست!
+ پیش از این آموزش اجرای یک پروژه یادگیری ماشین با پایتون منتشر شد. برای دیدن فیلم معرفی این آموزش بر روی این لینک(+) و یا پخش کننده زیر کلیک کنید:
برای دریافت کامل آموزش اینجا (+) کلیک کنید.
کلید واژگان
تنسورفلو چیست – تنسرفلو چیست – تنسور فلور چیست – tensorflow چیست – تنسورفلور در پایتون – تنسورفلو در پایتون – شروع کار با تنسورفلو – یادگیری عمیق با تنسورفلو – فریم ورک های یادگیری عمیق – فریمورک های یادگیری عمیق – مزایای تنسورفلو – مزایای تنسورفلور – مزایا تنسورفلو – مزایا tensorflow – کتابخانه یادگیری ماشین – کتابخانه تنسورفلو – کتابخانه های یادگیری ماشین – کتابخانه های یادگیری ماشین پایتون – کتابخانه های یادگیری ماشین در پایتون – تنسرفلو چیست
منبع
what-is-tensorflow-the-machine-learning-library-explained.html