Почнемо цей підручник із вступу TensorFlow:
Що таке TensorFlow?
TensorFlow - це наскрізна платформа з відкритим кодом для створення додатків машинного навчання. Це символічна математична бібліотека, яка використовує потік даних та диференційоване програмування для виконання різних завдань, спрямованих на навчання та висновок глибоких нейронних мереж. Це дозволяє розробникам створювати додатки для машинного навчання, використовуючи різні інструменти, бібліотеки та ресурси спільноти.
В даний час найвідомішою бібліотекою глибокого навчання у світі є Google TensorFlow. Продукт 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, щоб дозволити дослідникам та розробникам спільно працювати над моделлю ШІ. Одного разу розроблений і масштабований, він дозволяє багатьом людям використовувати його.
Вперше він був опублікований наприкінці 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 використовує графічну структуру. Графік збирає та описує всі обчислення серії, зроблені під час навчання. Графік має масу переваг:
- Це було зроблено для роботи на декількох процесорах або графічних процесорах і навіть мобільній операційній системі
- Переносимість графіка дозволяє зберегти обчислення для негайного або подальшого використання. Графік можна зберегти для подальшого виконання.
- Всі обчислення на графіку виконуються шляхом з'єднання тензорів між собою
- Тензор має вузол і ребро. Вузол виконує математичну операцію і видає кінцеві точки на виході. Ребра ребра пояснюють взаємозв'язок введення / виведення між вузлами.
Чому TensorFlow популярний?
TensorFlow - найкраща бібліотека з усіх, оскільки вона створена для того, щоб бути доступною для всіх. Бібліотека Tensorflow включає різні API для побудови масштабних архітектур глибокого навчання, таких як CNN або RNN. TensorFlow базується на обчисленні графіків; це дозволяє розробнику візуалізувати побудову нейронної мережі за допомогою Tensorboad. Цей інструмент корисний для налагодження програми. Нарешті, Tensorflow побудований для розгортання в масштабі. Він працює на процесорі та графічному процесорі.
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, Фото та Пошукову систему Google.
Команда Google Brain розробила TensorFlow, щоб заповнити прогалину між дослідниками та розробниками продуктів. У 2015 році вони оприлюднили TensorFlow; вона швидко зростає в популярності. На сьогоднішній день TensorFlow - це бібліотека глибокого навчання з найбільшою кількістю сховищ на GitHub.
Практикуючі використовують Tensorflow, оскільки його легко розгорнути в масштабі. Він створений для роботи в хмарі або на мобільних пристроях, таких як iOs та Android.
Tensorflow працює під час сеансу. Кожен сеанс визначається графіком з різними обчисленнями. Простим прикладом може бути множення на число. У Tensorflow потрібно три кроки:
- Визначте змінну
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)
Однією з поширених практик Tensorflow є створення конвеєра для завантаження даних. Якщо виконати ці п’ять кроків, ви зможете завантажити дані до TensorFLow
- Створіть дані
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Створіть заповнювач
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Визначте метод набору даних
dataset = tf.data.Dataset.from_tensor_slices(x)
- Створіть конвеєр
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Виконайте програму
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))