Какво е TensorFlow? Как работи? Въведение & Архитектура

Съдържание:

Anonim

Нека започнем този урок с въвеждането на TensorFlow:

Какво е TensorFlow?

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

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

За да дадем конкретен пример, потребителите на Google могат да изпитат по-бързо и прецизно търсене с AI. Ако потребителят въведе ключова дума в лентата за търсене, Google предоставя препоръка относно това, което може да бъде следващата дума.

Google иска да използва машинно обучение, за да се възползва от техните масивни масиви от данни, за да предостави на потребителите най-доброто изживяване. Три различни групи използват машинно обучение:

  • Изследователи
  • Учени за данни
  • Програмисти.

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

Google не разполага само с никакви данни; те имат най-масивния компютър в света, така че Tensor Flow е създаден в мащаб. TensorFlow е библиотека, разработена от Google Brain Team за ускоряване на машинното обучение и дълбоките изследвания на невронната мрежа.

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

В този урок за TensorFlow ще научите

  • Какво е TensorFlow?
  • История на TensorFlow
  • Как работи TensorFlow
  • Архитектура на TensorFlow
  • Къде може да работи Tensorflow?
  • Въведение в компонентите на TensorFlow
  • Защо TensorFlow е популярен?
  • Списък на видни алгоритми, поддържани от TensorFlow
  • Прост пример за TensorFlow
  • Опции за зареждане на данни в TensorFlow
  • Създайте тръбопровод Tensorflow

История на TensorFlow

Преди няколко години дълбокото обучение започна да превъзхожда всички останали алгоритми за машинно обучение, когато дава огромно количество данни. Google видя, че може да използва тези дълбоки невронни мрежи, за да подобри своите услуги:

  • Gmail
  • Снимка
  • Google търсачка

Те изграждат рамка, наречена Tensorflow, за да позволят на изследователите и разработчиците да работят заедно по AI модел. Веднъж разработен и мащабиран, той позволява на много хора да го използват.

За първи път беше публикуван в края на 2015 г., докато първата стабилна версия се появи през 2017 г. Той е с отворен код под лиценз Apache Open Source. Можете да го използвате, модифицирате и преразпределите модифицираната версия срещу заплащане, без да плащате нищо на Google.

След това в този урок за дълбоко обучение на TensorFlow ще научим за архитектурата на TensorFlow и как работи TensorFlow.

Как работи TensorFlow

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

Архитектура на TensorFlow

Архитектурата на Tensorflow работи в три части:

  • Предварителна обработка на данните
  • Изградете модела
  • Тренирайте и оценете модела

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

Ето защо се нарича TensorFlow, тъй като тензорът преминава в него, преминава през списък с операции и след това излиза от другата страна.

Къде може да работи Tensorflow?

Хардуерните и софтуерните изисквания на TensorFlow могат да бъдат класифицирани

Фаза на разработка: Това е, когато тренирате режима. Обучението обикновено се извършва на вашия настолен компютър или лаптоп.

Фаза на изпълнение или фаза на извода: След като обучението е завършено, Tensorflow може да се изпълнява на много различни платформи. Можете да го пуснете

  • Настолен компютър с Windows, macOS или Linux
  • Облакът като уеб услуга
  • Мобилни устройства като iOS и Android

Можете да го тренирате на множество машини, след което можете да го стартирате на различна машина, след като имате обучения модел.

Моделът може да бъде обучен и използван на графични процесори, както и на процесори. Графичните процесори първоначално са проектирани за видео игри. В края на 2010 г. изследователи от Станфорд установиха, че GPU също е много добър в матрични операции и алгебра, така че ги прави много бързи за извършване на този вид изчисления. Дълбокото обучение разчита на много умножение на матрици. TensorFlow е много бърз при изчисляване на матричното умножение, защото е написано на C ++. Въпреки че е внедрен в C ++, TensorFlow може да бъде достъпен и контролиран главно от други езици, Python.

И накрая, важна характеристика на TensorFlow е TensorBoard. TensorBoard дава възможност да се наблюдава графично и визуално какво прави TensorFlow.

Въведение в компонентите на TensorFlow

Тензор

Името на Tensorflow директно произлиза от основната му рамка: Tensor . В Tensorflow всички изчисления включват тензори. Тензорът е вектор или матрица от n-измерения, която представлява всички видове данни. Всички стойности в тензор съдържат идентичен тип данни с известна (или частично известна) форма . Формата на данните е размерността на матрицата или масива.

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

Графиката очертава операциите и връзките между възлите. Той обаче не показва стойностите. Ръбът на възлите е тензор, т.е. начин за попълване на операцията с данни.

Графики

TensorFlow използва графика. Графиката събира и описва всички серийни изчисления, направени по време на обучението. Графиката има много предимства:

  • Това беше направено, за да работи на множество CPU или GPU и дори мобилна операционна система
  • Преносимостта на графиката позволява да се запазят изчисленията за непосредствена или по-късна употреба. Графиката може да бъде запазена за изпълнение в бъдеще.
  • Всички изчисления в графиката се извършват чрез свързване на тензори заедно
    • Тензорът има възел и ръб. Възелът носи математическата операция и извежда крайни точки. Ръбовете ръбовете обясняват връзките вход / изход между възлите.

Защо TensorFlow е популярен?

TensorFlow е най-добрата библиотека от всички, защото е създадена, за да бъде достъпна за всички. Библиотеката Tensorflow включва различен API за изграждане на мащабна архитектура за дълбоко обучение като CNN или RNN. TensorFlow се основава на изчисление на графика; това позволява на разработчика да визуализира изграждането на невронната мрежа с Tensorboad. Този инструмент е полезен за отстраняване на грешки в програмата. И накрая, Tensorflow е създаден да бъде внедрен в мащаб. Работи на CPU и GPU.

Tensorflow привлича най-голямата популярност на GitHub в сравнение с другата рамка за дълбоко обучение.

Списък на видни алгоритми, поддържани от TensorFlow

По-долу са поддържаните списъци с алгоритми TensorFlow:

Понастоящем TensorFlow 1.10 има вграден API за:

  • Линейна регресия: tf.estimator.LinearRegressor
  • Класификация: tf.estimator.LinearClassifier
  • Класификация за задълбочено обучение: tf.estimator.DNNClassifier
  • Дълбоко обучение и дълбоко изтриване: tf.estimator.DNNLinearCombinedClassifier
  • Бустерна регресия на дървото: tf.estimator.BoostedTreesRegressor
  • Класификация на усилено дърво: tf.estimator.BoostedTreesClassifier

Прост пример за TensorFlow

import numpy as npimport tensorflow as tf

В първите два реда код сме импортирали tensorflow като tf. С Python е обичайна практика да се използва кратко име за библиотека. Предимството е да избягваме да въвеждаме пълното име на библиотеката, когато трябва да я използваме. Например, можем да импортираме tensorflow като tf и да извикаме tf, когато искаме да използваме функция tensorflow

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

По време на примера ще умножим X_1 и X_2 заедно. Tensorflow ще създаде възел за свързване на операцията. В нашия пример се нарича умножение. Когато графиката бъде определена, изчислителните механизми на Tensorflow ще се умножат заедно X_1 и X_2.

Пример за TensorFlow

И накрая, ще стартираме сесия TensorFlow, която ще изпълни изчислителната графика със стойностите на X_1 и X_2 и ще отпечата резултата от умножението.

Нека дефинираме входните възли X_1 и X_2. Когато създаваме възел в Tensorflow, трябва да изберем какъв възел да създадем. Възлите X1 и X2 ще бъдат възел за резервни части. Заместителят присвоява нова стойност всеки път, когато правим изчисление. Ще ги създадем като възел за запаметяване на точка TF.

Стъпка 1: Дефинирайте променливата

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")

Когато създаваме възел за запълване, трябва да предадем типа данни, като тук ще се добавят числа, за да можем да използваме тип данни с плаваща запетая, нека използваме tf.float32. Също така трябва да дадем име на този възел. Това име ще се появи, когато разгледаме графичните визуализации на нашия модел. Нека назовем този възел X_1, като предадем параметър, наречен name, със стойност X_1 и сега нека дефинираме X_2 по същия начин. X_2.

Стъпка 2: Определете изчислението

multiply = tf.multiply(X_1, X_2, name = "multiply")

Сега можем да дефинираме възела, който извършва операцията за умножение. В Tensorflow можем да направим това, като създадем tf.multiply възел.

Ще преминем към възлите X_1 и X_2 до възела за умножение. Той казва на tensorflow да свърже тези възли в изчислителната графика, така че ние го молим да изтегли стойностите от x и y и да умножи резултата. Нека дадем и на умножителния възел името multiply. Това е цялата дефиниция за нашата проста изчислителна графика.

Стъпка 3: Изпълнете операцията

За да изпълним операции в графиката, трябва да създадем сесия. В Tensorflow това се извършва от tf.Session (). Сега, след като имаме сесия, можем да помолим сесията да изпълнява операции върху нашата изчислителна графика, като извикаме сесия. За да стартираме изчислението, трябва да използваме run.

Когато операцията по добавяне се изпълни, ще види, че трябва да вземе стойностите на възлите X_1 и X_2, така че трябва да подадем и стойности за X_1 и X_2. Можем да направим това, като предоставим параметър, наречен feed_dict. Предаваме стойността 1,2,3 за X_1 и 4,5,6 за X_2.

Отпечатваме резултатите с print (резултат). Трябва да видим 4, 10 и 18 за 1x4, 2x5 и 3x6

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]

Опции за зареждане на данни в TensorFlow

Първата стъпка преди обучението на алгоритъм за машинно обучение е зареждането на данните. Има два общи начина за зареждане на данни:

1. Заредете данни в паметта: Това е най-простият метод. Зареждате всичките си данни в паметта като един масив. Можете да напишете код на Python. Тези редове на код не са свързани с Tensorflow.

2. Конвейер за данни на Tensorflow. Tensorflow има вграден API, който ви помага лесно да зареждате данните, да извършвате операцията и да подавате алгоритъма за машинно обучение. Този метод работи много добре, особено когато имате голям набор от данни. Например, известно е, че записите на изображения са огромни и не се вписват в паметта. Конвейерът за данни управлява паметта сам

Какво решение да използвам?

Заредете данни в паметта

Ако вашият набор от данни не е твърде голям, т.е. по-малък от 10 гигабайта, можете да използвате първия метод. Данните могат да се поберат в паметта. Можете да използвате известна библиотека, наречена Pandas, за да импортирате CSV файлове. Ще научите повече за пандите в следващия урок.

Заредете данни с тръбопровод Tensorflow

Вторият метод работи най-добре, ако имате голям набор от данни. Например, ако имате набор от данни от 50 гигабайта и компютърът ви има само 16 гигабайта памет, машината ще се срине.

В тази ситуация трябва да изградите тръбопровод Tensorflow. Конвейерът ще зареди данните в пакет или на малки парчета. Всяка партида ще бъде изтласкана към тръбопровода и ще бъде готова за обучението. Изграждането на тръбопровод е отлично решение, защото ви позволява да използвате паралелни изчисления. Това означава, че Tensorflow ще обучи модела на множество процесори. Той насърчава изчисленията и разрешава за обучение на мощна невронна мрежа.

Ще видите в следващите уроци за това как да изградите значителен тръбопровод за захранване на вашата невронна мрежа.

Накратко, ако имате малък набор от данни, можете да заредите данните в паметта с библиотека Pandas.

Ако имате голям набор от данни и искате да използвате множество процесори, тогава ще ви е по-удобно да работите с тръбопровод Tensorflow.

Създайте тръбопровод Tensorflow

В примера по-рано добавяме ръчно три стойности за X_1 и X_2. Сега ще видим как да заредим данни в Tensorflow.

Стъпка 1) Създайте данните

На първо място, нека използваме numpy библиотека за генериране на две произволни стойности.

import numpy as npx_input = np.random.sample((1,2))print(x_input)

[[0,8835775 0,23766977]]

Стъпка 2) Създайте заместител

Както в предишния пример, ние създаваме заместител с името X. Трябва да посочим изрично формата на тензора. В случай, че ще заредим масив само с две стойности. Можем да запишем фигурата като shape = [1,2]

# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

Стъпка 3) Дефинирайте метода на набора от данни

След това трябва да дефинираме набора от данни, където можем да попълним стойността на заместителя x. Трябва да използваме метода tf.data.Dataset.from_tensor_slices

dataset = tf.data.Dataset.from_tensor_slices(x)

Стъпка 4) Създайте конвейера

В стъпка четвърта трябва да инициализираме конвейера, където ще текат данните. Трябва да създадем итератор с make_initializable_iterator. Ние го наричаме итератор. След това трябва да извикаме този итератор, за да подадем следващата партида данни, get_next. Ние наричаме тази стъпка get_next. Имайте предвид, че в нашия пример има само една партида данни само с две стойности.

iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()

Стъпка 5) Изпълнете операцията

Последната стъпка е подобна на предишния пример. Инициираме сесия и стартираме итератора на операцията. Ние захранваме feed_dict със стойността, генерирана от numpy. Тези две стойности ще попълнят заместителя x. След това стартираме get_next, за да отпечатаме резултата.

with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]

Обобщение

Значение на TensorFlow: TensorFlow е най-известната библиотека за дълбоко обучение през последните години. Практикуващият, използващ TensorFlow, може да изгради всякаква структура за дълбоко обучение, като CNN, RNN или обикновена изкуствена невронна мрежа.

TensorFlow се използва най-вече от учени, стартиращи компании и големи компании. Google използва TensorFlow в почти всички ежедневни продукти на Google, включително Gmail, Photo и Google Search Engine.

Екипът на Google Brain разработи TensorFlow, за да запълни празнината между изследователи и разработчици на продукти. През 2015 г. те направиха TensorFlow публично достояние; бързо нараства популярността си. В днешно време TensorFlow е библиотеката за дълбоко обучение с най-много хранилища на GitHub.

Практикуващите използват Tensorflow, защото е лесно да се разгърнат в мащаб. Той е създаден да работи в облака или на мобилни устройства като iOs и Android.

Tensorflow работи в сесия. Всяка сесия се определя от графика с различни изчисления. Един прост пример може да бъде умножаване на число. В Tensorflow са необходими три стъпки:

  1. Дефинирайте променливата
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Дефинирайте изчислението
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Изпълнете операцията
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)

Една често срещана практика в Tensorflow е да се създаде тръбопровод за зареждане на данните. Ако изпълните тези пет стъпки, ще можете да заредите данни в TensorFLow

  1. Създайте данните
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Създайте заместител
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Дефинирайте метода на набора от данни
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Създайте конвейера
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Изпълнете програмата
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))