تنسورفلو

تنسورفلو () یک کتابخانه نرم‌افزاری برای یادگیری ماشین و هوش مصنوعی است. این کتابخانه در طیف گسترده‌ای از وظایف قابل استفاده است، اما عمدتاً برای آموزش و استنتاجِ شبکه‌های عصبی مصنوعی به‌کار می‌رود. «این یک نرم‌افزار یادگیری ماشین است که برای انواع گوناگونی از وظایف ادراکی و درک زبان مورد استفاده قرار می‌گیرد» — جفری دین، دقیقهٔ ۰:۴۷ از ۲:۱۷ در ویدئوی یوتیوب این کتابخانه یکی از محبوب‌ترین چارچوب‌های یادگیری عمیق به‌شمار می‌رود و در کنار چارچوب‌هایی مانند پای‌تورچ قرار دارد. تنسرفلو یک نرم‌افزار آزاد و متن‌باز است که تحت مجوز آپاچی ۲٫۰ منتشر شده است.

این کتابخانه توسط تیم گوگل برین برای استفاده داخلی گوگل در پژوهش و محیط‌های تولیدی توسعه داده شد. در دقیقهٔ ۰:۱۵ از ۲:۱۷ در دقیقهٔ ۰:۲۶ از ۲:۱۷ نسخه اولیه آن در سال ۲۰۱۵ تحت مجوز آپاچی ۲٫۰ منتشر شد. گوگل نسخه به‌روزشده‌ای با عنوان تنسورفلو ۲٫۰ را در سپتامبر ۲۰۱۹ منتشر کرد.

تنسورفلو را می‌توان در طیف گسترده‌ای از زبان‌های برنامه‌نویسی، از جمله پایتون، جاوااسکریپت، C++ و جاوا به‌کار برد، که این امر استفاده از آن را در دامنه گسترده‌ای از کاربردها در بخش‌های مختلف تسهیل می‌کند.

 تاریخچه 

 دیست‌بیلیف 
از سال ۲۰۱۱، تیم گوگل برین سامانه دیست‌بیلیف  را به‌عنوان یک سیستم مالکیتیِ یادگیری ماشین مبتنی بر یادگیری عمیق و شبکه‌های عصبی مصنوعی توسعه داد. استفاده از این سامانه به سرعت در میان شرکت‌های مختلف آلفابت، هم در پژوهش و هم در کاربردهای تجاری، گسترش یافت. گوگل چندین دانشمند علوم رایانه، از جمله جف دین، را مأمور کرد تا پایگاه کد دیست‌بیلیف را ساده‌سازی کرده و آن را بازآرایی کنند تا به یک کتابخانه سریع‌تر و مقاوم‌تر در سطح کاربردهای تولیدی/عملیاتی تبدیل شود؛ کتابخانه‌ای که بعدها به تنسورفلو تبدیل شد. در سال ۲۰۰۹، این تیم به رهبری جفری هینتون، با پیاده‌سازی تعمیم‌یافته پس‌انتشار خطا و همچنین در کنار بهبودهای دیگر، این امکان را ایجاد کردند که دقت به مراتب بالاتری از مدلهای پیشین را در شبکه‌های عصبی بدست آید. برای نمونه، کاهش ۲۵ درصدی خطاها در تشخیص گفتار.

 تنسورفلو 
تنسورفلو سامانه نسل دوم گوگل برین است. نسخه ۱٫۰٫۰ آن در ۱۱ فوریه ۲۰۱۷ منتشر شد. در حالی که پیاده‌سازی مرجع آن تنها بر روی یک دستگاه‌ه قابل اجرا است، ولی تنسورفلو می‌تواند بر روی چندین سی‌پی‌یو و جی‌پی‌یو اجرا شود، که با به کار گیری افزونه‌های اختیاری کودا و SYCL برای محاسبات همه‌منظوره بر روی واحدهای پردازش گرافیکی قابل انجام است. تنسورفلو بر روی نسخه‌های ۶۴ بیتی لینوکس، مک‌اواس، ویندوز و همچنین سکوهای رایانش همراه، از جمله اندروید و آی‌اواس در دسترس است.

معماری انعطاف‌پذیر آن امکان استقرار آسان محاسبات را بر روی انواع گوناگونی از سکوها (سی‌پی‌یو و جی‌پی‌یو، و حتی تی‌پی‌یو) و از رایانه‌های رومیزی تا خوشه‌های سرور و دستگاه‌های همراه و لبه‌ای فراهم می‌کند.

محاسبات تنسورفلو به شکل حالت‌دار و در قالب برنامه‌نویسی جریان داده با استفاده از گراف‌های جهت‌دار بیان می‌شوند. نام تنسورفلو نیز از عملیاتی گرفته شده است که چنین شبکه‌های عصبی بر روی آرایه‌های داده‌ای چندبعدی انجام می‌دهند. این آرایه‌ها با عنوان تنسور شناخته می‌شوند. در جریان کنفرانس گوگل آی/او در ژوئن ۲۰۱۶، جف دین اعلام کرد که ۱٬۵۰۰ مخزن در گیت‌هاب به تنسورفلو اشاره کرده‌اند که تنها ۵ مورد از آن‌ها متعلق به گوگل بوده است.Machine Learning: Google I/O 2016 Minute 07:30/44:44. . Retrieved June 5, 2016.

در مارس ۲۰۱۸، گوگل نسخه ۱٫۰ TensorFlow.js را برای یادگیری ماشین در جاوااسکریپت معرفی کرد.

در ژانویه ۲۰۱۹، گوگل تنسورفلو ۲٫۰ را معرفی کرد. این نسخه در سپتامبر ۲۰۱۹ به طور رسمی در دسترس قرار گرفت.

در مه ۲۰۱۹، گوگل محصول تنسورفلو گرافیکس را برای کاربردهای یادگیری عمیق در گرافیک رایانه‌ای معرفی کرد.

 واحد پردازشی تنسور (تی‌پی‌یو) 

در مه ۲۰۱۶، گوگل واحد پردازشی تنسور (تی‌پی‌یو) خود را معرفی کرد؛ یک مدار مجتمع با کاربرد خاص (اِی‌سیک، یک تراشه سخت‌افزاری) که به طور ویژه برای یادگیری ماشین ساخته شده و برای تنسورفلو بهینه‌سازی شده است. تی‌پی‌یو یک شتاب‌دهنده هوش مصنوعی قابل برنامه‌ریزی است که برای فراهم‌سازی گذردهی بالا در محاسبات با دقت پایین (برای مثال، ۸ بیتی) طراحی شده و بیشتر بر استفاده یا اجرای مدل‌ها تمرکز دارد تا آموزش آن‌ها. گوگل اعلام کرد که بیش از یک سال است تی‌پی‌یوها را در مراکز داده خود به‌کار گرفته و دریافتند که این واحدها برای یادگیری ماشین، عملکرد به ازای وات بهینه‌تری در حد یک مرتبه بزرگی ارائه می‌دهند.

در مه ۲۰۱۷، گوگل از نسل دوم تی‌پی‌یوها رونمایی کرد و همچنین در دسترس قرار گرفتن آن‌ها را در گوگل کامپیوت انجین اعلام نمود. تی‌پی‌یوهای نسل دوم تا ۱۸۰ ترافلاپس توان پردازشی ارائه می‌دهند و هنگامی که در قالب خوشه‌هایی شامل ۶۴ تی‌پی‌یو سازمان‌دهی می‌شوند، تا ۱۱٫۵ پتافلاپس توان پردازشی فراهم می‌کنند.

در مه ۲۰۱۸، گوگل از تی‌پی‌یوهای نسل سوم با توان پردازشی تا ۴۲۰ ترافلاپس و ۱۲۸ گیگابایت حافظه با پهنای باند بالا  خبر داد. پادهای Cloud TPU v3 بیش از ۱۰۰ پتافلاپس توان پردازشی و ۳۲ ترابایت حافظه اِچ‌بی‌اِم ارائه می‌کنند.

در فوریه ۲۰۱۸، گوگل اعلام کرد که تی‌پی‌یوها را به صورت نسخه آزمایشی (بتا) در سکوی ابری گوگل در دسترس قرار می‌دهد.

 تی‌پی‌یو لبه 
در ژوئیه ۲۰۱۸، تی‌پی‌یو لبه یا اِج تی‌پی‌یو معرفی شد. تی‌پی‌یو لبه تراشه اِی‌سیک اختصاصی گوگل است که برای اجرای مدل‌های یادگیری ماشین تنسورفلو لایت بر روی دستگاه‌های کوچک سمت کاربر، مانند تلفن‌های هوشمند، طراحی شده است که در حوزه رایانش لبه‌ای به‌کار می‌روند.

 تنسورفلو لایت 
در مه ۲۰۱۷، گوگل تنسورفلو لایت را به‌عنوان یک پشته نرم‌افزاری برای پشتیبانی از مدل‌های یادگیری ماشین در دستگاه‌های همراه و نهفته معرفی کرد و در نوامبر ۲۰۱۷ پیش‌نمایش توسعه‌دهندگان آن را ارائه داد. در ژانویه ۲۰۱۹، تیم تنسورفلو پیش‌نمایش توسعه‌دهندگان موتور استنتاج جی‌پی‌یو همراه را با استفاده از OpenGL ES 3.1 Compute Shaders بر روی دستگاه‌های اندرویدی و Metal Compute Shaders بر روی دستگاه‌های iOS منتشر کرد. در مه ۲۰۱۹، گوگل اعلام کرد که تنسورفلو لایت میکرو (که با نام تنسورفلو لایت برای میکروکنترلر نیز شناخته می‌شود) با یوتنسور متعلق به آرم ادغام خواهد شد. این پروژه در سال ۲۰۲۴ به لایت‌آرتی  تغییر نام داد.

 تنسورفلو ۲٫۰ 
در حالی که سهم تنسورفلو از بازار مقالات پژوهشی به نفع پای‌تورچ رو به کاهش بود، تیم تنسورفلو در سپتامبر ۲۰۱۹ انتشار یک نسخه اصلی جدید از این کتابخانه را اعلام کرد. تنسورفلو ۲٫۰ تغییرات بسیاری را معرفی کرد که مهم‌ترین آن‌ها تنسورفلو ایگر بود؛ قابلیتی که طرح مشتق‌گیری خودکار را از گراف محاسباتی ایستا، به الگوی «تعریف در زمان اجرا» تغییر داد. این الگو که در ابتدا توسط Chainer محبوب شد و بعدها توسط پای‌تورچ گسترش یافت. دیگر تغییرات مهم شامل حذف کتابخانه‌های قدیمی، سازگاری متقابل میان مدل‌های آموزش‌دیده در نسخه‌های مختلف تنسورفلو و بهبودهای چشمگیر در عملکرد بر روی جی‌پی‌یو بود.

 ویژگی‌ها 

 مشتق‌گیری خودکار 
مشتق‌گیری خودکار  فرایندی است که در آن بردار گرادیان یک مدل نسبت به هر یک از پارامترهای آن به صورت خودکار محاسبه می‌شود. با استفاده از این قابلیت، تنسورفلو می‌تواند گرادیان‌های مربوط به پارامترهای یک مدل را به طور خودکار محاسبه کند. این قابلیت برای الگوریتم‌هایی مانند پس‌انتشار که برای بهینه‌سازی عملکرد به گرادیان نیاز دارند، بسیار مفید است. برای انجام این کار، چارچوب باید ترتیب عملیات انجام‌شده بر روی تنسورهای ورودی در یک مدل را ثبت کند و سپس گرادیان‌ها را نسبت به پارامترهای مناسب محاسبه نماید.

 اجرای آنی 
تنسورفلو شامل حالتی با عنوان «اجرای آنی»  است. بدین معنا که عملیات بلافاصله ارزیابی می‌شوند، نه اینکه به یک گراف محاسباتی افزوده شوند که بعداً اجرا گردد. کدی که به‌صورت آنی اجرا می‌شود را می‌توان گام‌به‌گام از طریق اشکال‌زدا بررسی کرد، زیرا داده‌ها در هر خط از کد به‌روزرسانی می‌شوند، نه اینکه بعداً در یک گراف محاسباتی پردازش شوند. این الگوی اجرا به دلیل شفافیت گام‌به‌گام خود، در اشکال‌زدایی کد خیلی سهولت ایجاد کرده است.

 توزیع 
تنسورفلو هم در حالت اجرای آنی و هم در اجرای مبتنی بر گراف، یک اِی‌پی‌آی ارائه می‌دهد که با استفاده از راهبردهای گوناگون توزیع، امکان توزیع محاسبات میان چندین دستگاه را به کاربر می‌دهد. این رایانش توزیع‌شده اغلب می‌تواند اجرای فرایند آموزش و ارزیابی مدل‌های تنسورفلو را سرعت ببخشد و یک رویه رایج در حوزه هوش مصنوعی به شمار می‌رود.

 تلفات 
برای آموزش و ارزیابی مدل‌ها، تنسورفلو مجموعه‌ای از توابع تلفات (که با عنوان توابع هزینه نیز شناخته می‌شوند) را فراهم می‌کند. از نمونه‌های رایج این توابع می‌توان به میانگین مربعات خطا  و آنتروپی متقاطع دودویی  اشاره کرد.

 معیارهای اندازه‌گیری و ارزیابی 
تنسورفلو برای ارزیابی عملکرد مدل‌های یادگیری ماشین، دسترسی به معیارهای پرکاربرد را از طریق  اِی‌پی‌آی فراهم می‌کند. از جمله این معیارها می‌توان به انواع مختلف معیارهای دقت (دودویی، رده‌ای و رده‌ای تنک) و همچنین معیارهایی مانند دقت و بازیابی و اشتراک بر اجتماع  اشاره کرد.

 TF.nn 
TensorFlow.nn یک ماژول برای اجرای عملیات پایه شبکه‌های عصبی مصنوعی بر روی مدل‌ها است. برخی از این عملیات شامل گونه‌های مختلف کانولوشن‌ها (یک‌بعدی، دوبعدی، سه‌بعدی، آتروس و عمقی)، توابع فعال‌سازی (Softmax، ReLU، GELU، سیگموئید و غیره) و دیگر انواع آن‌ها، و همچنین عملیات دیگر مانند max-pooling، افزودن بایاس و موارد مشابه است.

 بهینه‌سازها 
تنسورفلو مجموعه‌ای از بهینه‌سازها را برای آموزش شبکه‌های عصبی ارائه می‌دهد که از جمله آن‌ها می‌توان به آدام، آداگراد و گرادیان کاهشی تصادفی اشاره کرد. هنگام آموزش یک مدل، بهینه‌سازهای مختلف شیوه‌های متفاوتی برای تنظیم پارامترها ارائه می‌دهند که این امر اغلب بر همگرایی و عملکرد مدل تأثیر می‌گذارد.

 توسعه‌ها و به‌کارگیری 

 تنسورفلو 
تنسورفلو به عنوان یک سکوی هسته‌ای و کتابخانه‌ای برای یادگیری ماشین عمل می‌کند. اِی‌پی‌آی‌های تنسورفلو از کراس استفاده می‌کنند تا به کاربران امکان دهند مدل‌های یادگیری ماشین خود را ایجاد کنند. تنسورفلو افزون بر ساخت و آموزش مدل، می‌تواند در بارگذاری داده‌ها برای آموزش مدل و همچنین استقرار آن با استفاده از تنسورفلو سروینگ نیز کمک کند.

تنسورفلو یک پایتون پایدار واسط برنامه‌نویسی کاربردی (اِی‌پی‌آی) ارائه می‌دهد، و همچنین اِی‌پی‌آی‌هایی بدون تضمین سازگاری با نسخه‌های پیشین برای جاوااسکریپت، C++ و جاوا ارائه می‌کند. افزون بر این، بسته‌های اتصال زبانیِ شخص ثالث نیز برای زبان‌های سی‌شارپ، هسکل، جولیا، متلب، آبجکت پاسکال، آر، اسکالا، راست، اکمل و Crystal در دسترس هستند. اتصال‌هایی که در حال حاضر بایگانی شده و دیگر پشتیبانی نمی‌شوند شامل گو و سوئیفت هستند.

 TensorFlow.js 
تنسورفلو دارای یک کتابخانه برای یادگیری ماشین در جاوااسکریپت نیز هست. با استفاده از رابط‌های برنامه‌نویسی کاربردی جاوااسکریپت که ارائه شده‌اند، TensorFlow.js به کاربران اجازه می‌دهد تا یا از مدل‌های TensorFlow.js استفاده کنند یا از مدل‌های تبدیل‌شده از تنسورفلو لایت یا تی‌اِف‌لایت بهره ببرند، مدل‌های موجود را دوباره آموزش دهند و آن‌ها را در محیط وب اجرا کنند.

 لایت‌آرتی 
لایت‌آرتی که پیش‌تر با نام تنسورفلو لایت شناخته می‌شد، رابط‌های برنامه‌نویسی کاربردی را برای برنامه‌های تلفن همراه یا دستگاه‌های توکار فراهم می‌کند تا مدل‌های تنسورفلو تولید و مستقر شوند. این مدل‌ها به‌منظور افزایش کارایی و دستیابی به عملکرد بالاتر روی دستگاه‌هایی با ظرفیت محدودتر، فشرده و بهینه‌سازی می‌شوند.

لایت‌آرتی از فلت‌بافر به‌عنوان قالب سریال‌سازی داده برای مدل‌های شبکه استفاده می‌کند و از قالب پروتکل بافرز که در مدل‌های استاندارد تنسورفلو به‌کار می‌رود، اجتناب می‌کند.

 TFX 
تنسورفلو توسعه داده‌شده  مجموعه‌ای از مؤلفه‌های متعدد را برای انجام تمام عملیات موردنیاز جهت تولید سرتاسری (end-to-end) فراهم می‌کند. این مؤلفه‌ها شامل بارگذاری، اعتبارسنجی و تبدیل داده‌ها، تنظیم ابرپارامترها، آموزش و ارزیابی مدل یادگیری ماشین، و در نهایت استقرار خود مدل در محیط تولید هستند.

 یکپارچه‌سازی‌ها 

 نام‌پای 
نام‌پای یکی از محبوب‌ترین کتابخانه‌های داده در پایتون است و تنسورفلو یکپارچگی و سازگاری با ساختارهای داده‌ای آن را فراهم می‌کند. آرایه‌های چندبعدی نام‌پای (NDarrayها) که نوع داده بومی این کتابخانه هستند، به طور خودکار در عملیات تنسورفلو به تنسورهای تنسورفلو تبدیل می‌شوند و برعکس، این تبدیل نیز انجام‌پذیر است. این ویژگی امکان می‌دهد که این دو کتابخانه بدون نیاز به نوشتن تبدیل‌های صریح داده توسط کاربر، به صورت هماهنگ با یکدیگر کار کنند. افزون بر این، این یکپارچگی به بهینه‌سازی حافظه نیز گسترش می‌یابد، به‌طوری که تنسورهای تنسورفلو در صورت امکان، نمایش حافظه زیربنایی آرایه‌های نام‌پای را با آن‌ها به‌اشتراک می‌گذارند.

 توسعه‌ها 
تنسورفلو مجموعه متنوعی از کتابخانه‌ها و افزونه‌ها را برای توسعه و گسترش مدل‌ها و روش‌های مورد استفاده ارائه می‌دهد. برای نمونه، تنسورفلو ریکامندرز و تنسورفلو گرافیکس، کتابخانه‌هایی برای کارکردهای تخصصی مربوط به خود هستند. افزونه‌ها، کتابخانه‌ها و چارچوب‌های نرم‌افزاری دیگری نیز وجود دارند که از جمله آن‌ها می‌توان به موارد زیر اشاره کرد:

 TensorFlow Model Optimization
 TensorFlow Probability
 TensorFlow Quantum
 TensorFlow Decision Forests

 گوگل کولب 
در این بین، گوگل محصول همکاری را منتشر نیز کرده است؛ محیطی مبتنی بر کتابچه ژوپیتر برای تنسورفلو که به هیچ‌گونه راه‌اندازی اولیه نیاز ندارد. این محیط بر بستر سکوی ابری گوگل اجرا می‌شود و به کاربران امکان دسترسی رایگان به واحدهای پردازش گرافیکی (جی‌پی‌یو) و همچنین قابلیت ذخیره و به‌اشتراک‌گذاری نوت‌بوک‌ها در گوگل درایو را می‌دهد.

 کاربردها 

 پزشکی 

 جی‌ای هلث‌کر از تنسورفلو برای افزایش سرعت و دقت اِم‌آر‌آی در شناسایی بخش‌های مشخصی از بدن استفاده کرد.
 گوگل از تنسورفلو برای ایجاد DermAssist، یک برنامه تلفن همراه رایگان، استفاده کرد که به کاربران امکان می‌دهد از پوست خود عکس بگیرند و عوارض بالقوه سلامتی را شناسایی کنند.
 سینوویشن ونچرز از تنسورفلو برای شناسایی و طبقه‌بندی بیماری‌های چشمی از اسکن‌های مقطع‌نگاری همدوسی اپتیکی استفاده کرد.

 رسانه‌های اجتماعی 

 توییتر از تنسورفلو برای رتبه‌بندی توییت‌ها بر اساس میزان اهمیت آن‌ها برای هر کاربر استفاده کرد و پلتفرم خود را به‌گونه‌ای تغییر داد که توییت‌ها بر اساس این رتبه‌بندی نمایش داده شوند. پیش از این، توییت‌ها صرفاً به ترتیب معکوس زمانی نمایش داده می‌شدند. برنامه اشتراک‌گذاری عکس وی‌اس‌سی‌او از تنسورفلو برای کمک به پیشنهاد فیلترهای سفارشی برای تصاویر استفاده کرد.

 موتور جستجو 
گوگل به‌طور رسمی رنک برین را در ۲۶ اکتبر ۲۰۱۵ منتشر کرد که مبتنی بر تنسورفلو بود.

 آموزش 

 InSpace، یک پلتفرم یادگیری مجازی، از تنسورفلو برای فیلتر کردن پیام‌های سمی در گفت‌وگوهای کلاسی استفاده کرد.
 Liulishuo، یک پلتفرم آنلاین آموزش زبان انگلیسی، از تنسورفلو برای ایجاد یک برنامه درسی تطبیقی برای هر دانش‌آموز استفاده کرد. تنسورفلو برای ارزیابی توانایی‌های فعلی دانش‌آموزان به‌کار گرفته شد و همچنین در تصمیم‌گیری درباره این‌که بر اساس این توانایی‌ها چه محتوایی نمایش داده شود، نقش داشت.

 خرده‌فروشی 

 پلتفرم تجارت الکترونیک کاروسیل از تنسورفلو برای ارائه پیشنهادهای شخصی‌سازی‌شده به مشتریان استفاده کرد.
 شرکت لوازم آرایشی مدیفیس از تنسورفلو برای ایجاد یک تجربه واقعیت افزوده استفاده کرد تا مشتریان بتوانند سایه‌های مختلف آرایش را روی چهره خود امتحان کنند.

 پژوهش 

 تنسورفلو زیربنای نرم‌افزار خودکار توصیف تصویر با نام دیپ‌دریم است.

 جستارهای وابسته 

 مقایسه نرم‌افزارهای یادگیری عمیق
 برنامه‌نویسی مشتق‌پذیر
 کراس

 یادداشت‌ها 

 مراجع 

 مطالعات بیشتر 

 پیوند به بیرون 


 پایگاه آموزش فارسی تنسورفلو

رده:کتابخانه‌های علمی پایتون
رده:نرم‌افزارهای آزاد نوشته‌شده با پایتون
رده:نرم‌افزارهای آزاد نوشته‌شده با سی++
رده:نرم‌افزارهای داده‌کاوی و یادگیری ماشین
رده:نرم‌افزارهای گوگل
رده:نرم‌افزارهایی که از پروانه آپاچی استفاده می‌کنند
رده:یادگیری عمیق
رده:یادگیری ماشین کاربردی
رده:نرم‌افزارهای ۲۰۱۵ (میلادی)
رده:نرم‌افزارهای یادگیری عمیق
رده:هوش مصنوعی متن‌باز