Създадох този урок за TensorFlow за професионалисти и ентусиасти, които се интересуват от прилагането на алгоритъм за дълбоко обучение, използвайки TensorFlow за решаване на различни проблеми. TensorFlow е библиотека за дълбоко обучение с отворен код, която се основава на концепцията за графики на потока от данни за изграждане на модели. Тя ви позволява да създавате мащабни невронни мрежи с много слоеве.Изучаването на използването на тази библиотека също е основна част от .Следват темите, които ще бъдат обсъдени в този блог с уроци на TensorFlow:
- Какво е TensorFlow
- Основи на кода на TensorFlow
- TensorFlow UseCase
Какво представляват тензорите?
В този урок за TensorFlow, преди да говорим за TensorFlow, нека първо разберем какво са тензори . Тензорите не са нищо друго освен де факто за представяне на данните в дълбокото обучение.
Както е показано на изображението по-горе, тензорите са просто многомерни масиви, което ви позволява да представяте данни с по-големи размери. Като цяло, Deep Learning се справяте с високоразмерни набори от данни, където размерите се отнасят до различни характеристики, налични в набора от данни. Всъщност името „TensorFlow“ е получено от операциите, които невронните мрежи извършват върху тензори. Това е буквално поток от тензори. Тъй като сте разбрали какво са тензори, нека продължим напред в този урок за TensorFlow и да разберем - какво е TensorFlow?
Какво е TensorFlow?
TensorFlow е библиотека, базирана на Python, която предоставя различни видове функционалност за внедряване на модели за дълбоко обучение. Както беше обсъдено по-рано, терминът TensorFlow се състои от два термина - Tensor & Flow:
В TensorFlow терминът тензор се отнася до представянето на данни като многоизмерен масив, докато терминът поток се отнася до поредицата от операции, които човек извършва върху тензори, както е показано на горното изображение.
Сега сме покрили достатъчно информация за TensorFlow.
След това в този урок за TensorFlow ще обсъждаме основите на TensorFlow.
Урок за TensorFlow: Основи на кода
По принцип цялостният процес на писане на програма TensorFlow включва две стъпки:
- Изграждане на изчислителна графика
- Изпълнение на изчислителна графика
Позволете ми да ви обясня горните две стъпки една по една:
1. Изграждане на изчислителна графика
Така, какво е изчислителна графика? Е, изчислителната графика е поредица от операции на TensorFlow, подредени като възли в графиката. Всеки възел приема 0 или повече тензори като вход и създава тензор като изход. Позволете ми да ви дам пример за проста изчислителна графика, която се състои от три възли - да се , б & ° С както е показано по-долу:
Обяснение на горната изчислителна графика:
Постоянни възлисе използват за съхраняване на постоянни стойности, тъй като отнема нула вход, но генерира съхранените стойности като изход. В горния пример a и b са постоянни възли със стойности 5 и 6 съответно.
- Възелът c представлява операцията за умножаване на постоянен възел a с b. Следователно изпълнението на възел c ще доведе до умножаване на const възел a & b.
По принцип може да се мисли за изчислителна графика като алтернативен начин за концептуализиране на математическите изчисления, който се провежда в програма TensorFlow. Операциите, присвоени на различни възли на изчислителна графика, могат да се извършват паралелно, като по този начин се осигурява по-добра производителност по отношение на изчисленията.
Тук просто описваме изчислението, то не изчислява нищо, не съдържа никакви стойности, а просто дефинира операциите, посочени във вашия код.
разлика между претоварването на метода и заместването на метода
2. Изпълнение на изчислителна графика
Нека вземем предишния пример за изчислителна графика и да разберем как да я изпълним. Следва кодът от предишния пример:
Пример 1:
импортиране на tensorflow като tf # Изграждане на графика a = tf.constant (5.0) b = tf.constant (6.0) c = a * b
Сега, за да получим изхода на възел c, трябва да стартираме изчислителната графика в a сесия . Сесията поставя графичните операции върху устройства, като CPU или GPU, и предоставя методи за тяхното изпълнение.
Сесията капсулира контрола и състоянието на изпълнението на TensorFlow, т.е.съхранява информацията за реда, в който ще бъдат изпълнени всички операции, и предава резултата от вече изчислената операция към следващата операция в тръбопровода. Позволете ми да ви покажа как да стартирате горната изчислителна графика в рамките на сесия (Обяснение на всеки ред код е добавено като коментар):
# Създайте обекта на сесията sess = tf.Session () # Стартирайте графиката в рамките на сесия и съхранявайте изхода в променлива output_c = sess.run (c) # Отпечатайте изхода на възел c print (output_c) # Затворете сесията в освободете някои ресурси sess.close ()
Изход: 30
И така, всичко беше свързано със сесията и пускането на изчислителна графика в нея. Сега, нека поговорим за променливи и заместители, които ще използваме широко, докато изграждаме модел за задълбочено обучение, използвайки TensorFlow.
Константи, заместител и променливи
В TensorFlow константи, заместители и променливи се използват за представяне на различни параметри на модел за задълбочено обучение. Тъй като вече обсъдих константите по-рано, ще започна с заместители.
Заместител:
Константата на TensorFlow ви позволява да съхранявате стойност, но какво ще стане, ако искате вашите възли да вземат входни данни по време на изпълнение? За този вид функционалност се използват заместители, което позволява на вашата графика да приема външни входове като параметри. По принцип запазеното място е обещание да предостави стойност по-късно или по време на изпълнение. Позволете ми да ви дам пример за улесняване на нещата:
import tensorflow as tf # Създаване на заместители a = tf. placeholder (tf.float32) b = tf. placeholder (tf.float32) # Задаване на операция за умножение w.r.t. a & ampamp b за възел mul mul = a * b # Създаване на обект на сесия sess = tf.Session () # Изпълнение на mul чрез предаване на стойностите [1, 3] [2, 4] за a и b съответно output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Умножаване на ab:', изход)
Изход: [2. 12.]
Точки за запомняне заместители:
- Заместителите не се инициализират и не съдържат данни.
- Човек трябва да предоставя входове или емисии на заместителя, които се вземат предвид по време на изпълнение.
- Изпълнението на заместител без въвеждане генерира грешка.
Сега нека продължим напред и да разберем - какви са променливите?
Променливи
При задълбочено учене, заместителите се използват за вземане на произволни входове във вашия модел или графика. Освен взимане на вход, вие също трябва да модифицирате графиката така, че да може да генерира нови изходи w.r.t. същите входове. За това ще използвате променливи. Накратко, променлива ви позволява да добавяте такива параметри или възел към графиката, които могат да се обучават, т.е. стойността може да бъде модифицирана за периода от време. Променливите се дефинират чрез предоставяне на първоначалната им стойност и тип, както е показано по-долу:
var = tf.Variable ([0.4], dtype = tf.float32)
Забележка:
- В случай, че не сте предоставили изрично типа данни, TensorFlow ще изведе типа на константата / променливата от инициализираната стойност.
- TensorFlow има много свои собствени типове данни като tf.float32 , tf.int32 и т.н. Можете да се обърнете към всички тях тук .
Константите се инициализират, когато се обадите tf.постоянно , и тяхната стойност никога не може да се промени. Напротив, променливите не се инициализират, когато се обадите tf.Променлива . За да инициализирате всички променливи в програма TensorFlow, вие трябва да изрично извикайте специална операция, както е показано по-долу:
init = tf.global_variables_initializer () sess.run (init)
Винаги помнете, че променлива трябва да бъде инициализирана, преди графиката да се използва за първи път.
Забележка: Променливите TensorFlow са буфери в паметта, които съдържат тензори, но за разлика от нормалните тензори, които се създават само при изпълнение на графика и веднага се изтриват след това, променливите оцеляват при множество изпълнения на графика.
Сега, след като разгледахме достатъчно основи на TensorFlow, нека продължим напред и да разберем как да приложим модел на линейна регресия, използвайки TensorFlow.
Модел на линейна регресия с помощта на TensorFlow
Модел на линейна регресия се използва за прогнозиране на неизвестната стойност на променлива (Зависима променлива) от известната стойност на други променливи (Независима променлива), като се използва уравнение на линейна регресия, както е показано по-долу:
Следователно за създаването на линеен модел са ви необходими:
- Зависима или изходна променлива (Y)
- Променлива на наклон (w)
- Y - Прихващане или отклонение (b)
- Независима или входна променлива (X)
И така, нека започнем да изграждаме линеен модел, използвайки TensorFlow:
е връзка в Java
Копирайте кода, като щракнете върху бутона, даден по-долу:
# Създаване на променлива за наклон на параметър (W) с начална стойност като 0,4 W = tf.Variable ([. 4], tf.float32) # Създаване на променлива за пристрастие на параметър (b) с начална стойност като -0,4 b = tf.Variable ( [-0.4], tf.float32) # Създаване на заместители за предоставяне на вход или независима променлива, обозначени с xx = tf.placeholder (tf.float32) # Уравнение на линейна регресия linear_model = W * x + b # Инициализиране на всички променливи sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Изпълняващ се регресионен модел за изчисляване на изходния wrt към предоставените x стойности за печат (sess.run (linear_model {x: [1, 2, 3, 4]})))
Изход:
[0. 0.40000001 0.80000007 1.20000005]
Посоченият по-горе код просто представлява основната идея зад внедряването на регресионен модел, т.е. как следвате уравнението на регресионната линия, така че да получите изход w.r.t. набор от входни стойности. Но има още две неща, които трябва да бъдат добавени в този модел, за да се превърне в пълен модел на регресия:
- Първо, трябва да осигурим механизъм, чрез който нашият модел може да се обучава автоматично въз основа на даден набор от входове и съответни изходи.
- Второто нещо, от което се нуждаем, е да проверим нашия обучен модел, като сравним изхода му с желания или целевия изход въз основа на даден набор от x стойности.
Сега нека разберем как мога да включа горните функции в моя код за регресионен модел.
Функция за загуба - валидиране на модела
Функция за загуба измерва колко далеч е текущият изход на модела от този на желания или целевия изход. Ще използвам най-често използваната функция за загуба за моя модел на линейна регресия, наречен Сума на квадратна грешка или SSE. SSE изчислено w.r.t. изход на модела (представя се чрез linear_model) и желания или целевия изход (y) като:
y = tf.placeholder (tf.float32) грешка = linear_model - y squared_errors = tf.square (грешка) загуба = tf.reduce_sum (squared_errors) print (sess.run (загуба, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
Изход: 90.24
Както можете да видите, получаваме висока стойност на загубата. Следователно трябва да коригираме тежестите (W) и пристрастията (b), така че да намалим грешката, която получаваме.
тf.train API - Обучение на модела
TensorFlow осигурява оптимизатори които бавно променят всяка променлива, за да минимизират функцията на загуба или грешка. Най-простият оптимизатор е градиентно спускане . Той променя всяка променлива в зависимост от величината на производната на загубата по отношение на тази променлива.
# Създаване на екземпляр на оптимизатор на оптимизатор за градиентно спускане = tf.train.GradientDescentOptimizer (0,01) train = optimizer.minimize (загуба) за i in range (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sess.run ([W, b]))
Изход: [масив ([1.99999964], dtype = float32), масив ([9.86305167e-07], dtype = float32)]
И така, по този начин създавате линеен модел с помощта на TensorFlow и го обучавате, за да получите желания изход.
След като вече знаете за дълбокото обучение, разгледайте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за дълбоко обучение Edureka с TensorFlow за сертифициране помага на обучаващите се да станат експерти в обучението и оптимизирането на основни и конволюционни невронни мрежи, използвайки проекти и задачи в реално време, заедно с концепции като функцията SoftMax, автокодиращи невронни мрежи, ограничена машина на Boltzmann (RBM).
Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас.