Какво е TensorFlow? Обяснено е библиотеката за машинно обучение

Машинното обучение е сложна дисциплина. Но внедряването на модели за машинно обучение е далеч по-малко обезсърчително и трудно, отколкото преди, благодарение на рамките за машинно обучение - като Google TensorFlow - които улесняват процеса на получаване на данни, модели на обучение, обслужване на прогнози и усъвършенстване на бъдещите резултати.

Създаден от екипа на Google Brain, TensorFlow е библиотека с отворен код за цифрови изчисления и широкомащабно машинно обучение. TensorFlow обединява множество модели и алгоритми за машинно обучение и дълбоко обучение (известни още като невронни мрежи) и ги прави полезни чрез обща метафора. Той използва Python, за да предостави удобен интерфейс за интерфейс за изграждане на приложения с рамката, като същевременно изпълнява тези приложения в високопроизводителен C ++.

TensorFlow може да обучава и изпълнява дълбоки невронни мрежи за ръкописна класификация на цифри, разпознаване на изображения, вграждане на думи, повтарящи се невронни мрежи, модели на последователност в последователност за машинен превод, обработка на естествен език и симулации, базирани на PDE (частично диференциално уравнение). Най-доброто от всичко е, че TensorFlow поддържа прогнозиране на производството в мащаб, със същите модели, използвани за обучение.

Как работи TensorFlow

TensorFlow позволява на разработчиците да създават графики на потока от данни - структури, които описват как данните се движат през графика или серия от възли за обработка. Всеки възел в графиката представлява математическа операция и всяка връзка или ръб между възлите е многоизмерен масив от данни или тензор .

TensorFlow предоставя всичко това за програмиста чрез езика Python. Python е лесен за учене и работа с него и предоставя удобни начини да изразите как абстракциите на високо ниво могат да бъдат свързани заедно. Възлите и тензорите в TensorFlow са Python обекти, а приложенията TensorFlow са Python приложения.

Действителните математически операции обаче не се извършват в Python. Библиотеките на трансформации, които са достъпни чрез TensorFlow, са написани като високоефективни C ++ двоични файлове. Python просто насочва трафика между парчетата и осигурява абстракции за програмиране на високо ниво, за да ги свърже заедно.

Приложенията на TensorFlow могат да се изпълняват на повечето удобни цели: локална машина, клъстер в облака, устройства с iOS и Android, CPU или GPU. Ако използвате собствения облак на Google, можете да стартирате TensorFlow на персонализирания от Google силиконов процесор TensorFlow Processing Unit (TPU) за по-нататъшно ускорение. Получените модели, създадени от TensorFlow, обаче могат да бъдат внедрени на повечето устройства, където ще бъдат използвани за обслужване на прогнози.

TensorFlow 2.0, пуснат през октомври 2019 г., преработи рамката по много начини въз основа на обратна връзка от потребителите, за да улесни работата с нея (например, като използва относително простия Keras API за обучение на модели) и по-ефективна. Разпределеното обучение е по-лесно да се изпълнява благодарение на нов API, а поддръжката на TensorFlow Lite дава възможност за разполагане на модели на по-голямо разнообразие от платформи. Кодът, написан за по-ранни версии на TensorFlow, обаче трябва да бъде пренаписан - понякога само леко, понякога значително - за да се възползва максимално от новите функции на TensorFlow 2.0.

Предимства на TensorFlow

Най-голямата полза, която TensorFlow предоставя за развитието на машинното обучение, е абстракцията. Вместо да се занимава с подробности за внедряването на алгоритми или да измисля правилни начини за свързване на изхода на една функция с входа на друга, разработчикът може да се съсредоточи върху цялостната логика на приложението. TensorFlow се грижи за детайлите зад кулисите.

TensorFlow предлага допълнителни удобства за разработчиците, които трябва да отстранят грешки и да получат самоанализ в приложенията на TensorFlow. Режимът на изпълнено изпълнение ви позволява да оценявате и модифицирате всяка операция на графиката поотделно и прозрачно, вместо да конструирате цялата графика като един непрозрачен обект и да я оценявате наведнъж. Наборът за визуализация на TensorBoard ви позволява да инспектирате и профилирате начина, по който графиките се изпълняват чрез интерактивно уеб базирано табло.

TensorFlow също така печели много предимства от подкрепата на търговско облекло от A-списък в Google. Google не само подхранва бързия темп на развитие зад проекта, но създаде много значителни предложения около TensorFlow, които улесняват разгръщането и улесняват използването: гореспоменатият TPU силиций за ускорена производителност в облака на Google; онлайн център за споделяне на модели, създадени с рамката; вградени в браузъра и мобилни приложения на рамката; и още много.

Една забележка: Някои подробности за изпълнението на TensorFlow затрудняват получаването на напълно детерминирани резултати от обучението по модели за някои обучителни работни места. Понякога модел, обучен в една система, ще се различава леко от модел, обучен в друга, дори когато те се хранят с едни и същи данни. Причините за това са хлъзгави - напр. Как се посяват случайни числа и къде, или някои недетерминирани поведения при използване на графични процесори). Въпреки това е възможно да се заобиколят тези проблеми и екипът на TensorFlow обмисля повече контроли, които да повлияят на детерминизма в работния процес.

Свързано видео: Машинно обучение и дешифриране на AI

Разбивайки шума около машинното обучение и изкуствения интелект, нашият панел разказва дефинициите и последиците от технологията.

TensorFlow срещу конкуренцията

TensorFlow се конкурира с множество други рамки за машинно обучение. PyTorch, CNTK и MXNet са три основни рамки, които отговарят на много от същите нужди. По-долу отбелязах къде се открояват и излизат срещу TensorFlow.

  • PyTorch , освен че е изграден с Python, има и много други прилики с TensorFlow: хардуерно ускорени компоненти под капака, силно интерактивен модел за разработка, който позволява работа по дизайн, както и много полезни компоненти, които вече са включени. PyTorch обикновено е по-добър избор за бързо разработване на проекти, които трябва да стартират и стартират за кратко време, но TensorFlow печели за по-големи проекти и по-сложни работни процеси.

  • CNTK , Microsoft Cognitive Toolkit, подобно на TensorFlow използва графична структура, за да опише потока от данни, но се фокусира най-много върху създаването на невронни мрежи за задълбочено обучение. CNTK се справя по-бързо с много задачи в невронната мрежа и разполага с по-широк набор от API (Python, C ++, C #, Java). Понастоящем CNTK не е толкова лесно да се научи или внедри като TensorFlow.

  • Apache MXNet , приет от Amazon като водеща рамка за дълбоко обучение на AWS, може да се мащабира почти линейно в множество графични процесори и множество машини. Той също така поддържа широк спектър от езикови приложни програмни интерфейси - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - въпреки че родните му API не са толкова приятни за работа, колкото тези на TensorFlow.