Якщо ви уважно стежите за технологічною сценою, ви напевно чули термін «глибоке навчання».
Ця технологія зробила революцію в штучному інтелекті, допомагаючи людству створювати машини і системи, про які раніше ми тільки мріяли. По суті, Deep Learning - це підсистема машинного навчання, в якій використовуються глибокі штучні нейронні мережі.
Простий у використанні і широко підтримуваний, Keras робить роботу з глибоким вивченням дуже зручною і ефективною.
Глибокі нейронні мережі все більше входять в моду, але складність освоєння їх основних структур є серйозною перешкодою для використання багатьма розробниками, які погано знайомі з машинним навчанням.
Протягом 2010-2020 років було запропоновано кілька поліпшених і спрощених високорівневих API для побудови моделей нейронних мереж. Всі вони в цілому схожі, але демонструють значні відмінності при найближчому розгляді.
Keras - один з провідних API-інтерфейсів нейронних мереж високого рівня. Він написаний на Python і підтримує кілька внутрішніх обчислювальних движків нейронних мереж. Основна ідея розробки Keras - полегшити експерименти шляхом швидкого прототипування. Здатність перейти від ідеї до результату з найменшою можливою затримкою є ключем до гарних досліджень машинного інтелекту.
По суті - це просто Високорівнева бібліотека, побудована на основі Theano або TensorFlow. Keras надає API типу scikit-learn для побудови нейронних мереж. Розробники можуть використовувати Keras для швидкої побудови нейронних мереж, не турбуючись про математичних аспектах тензорною алгебри, чисельні методи і методи оптимізації.
Почати роботу з Keras без проблем може будь-який розробник, який вже мав справу із середовищем Python.
Для початку роботи вам буде потрібно наступне встановлене програмне забезпечення:
Далі встановіть пакет keras R з GitHub наступним чином:
Devtools :: install_github ( "rstudio / keras")
Інтерфейс Keras R за замовчуванням використовує серверний движок TensorFlow. Щоб встановити як базову бібліотеку Keras, так і бекенда TensorFlow, використовуйте функцію install_keras ():
library (keras) install_keras ()
Це забезпечить вам стандартні установки Keras і TensorFlow на основі процесора. Якщо ви хочете більш індивідуальну установку, наприклад, бажаєте скористатися перевагами графічних процесорів NVIDIA, зверніться до документації по install_keras ().
Спеціального способу завантаження даних в Keras з локального диска не існує, просто збережіть дані тесту і працюйте з ними у відповідній папці.
-- current directory -- data | --train | -- test
Якщо ваш потік каталогів такий, то для завантаження даних ви можете використовувати наступний код:
import os import numpy as np from keras.preprocessing import image PATH = os.getcwd() train_path = PATH+'/data/train/' train_batch = os.listdir(train_path) x_train = [] # if data are in form of images for sample in train_data: img_path = train_path+sample x = image.load_img(img_path)...
Базова структура даних Keras - це модель, спосіб організації шарів. У Keras є два основних типи моделей: послідовна модель і клас Model, який використовується з функціональним API. Найпростішим типом моделі є послідовна модель, лінійний стек шарів.
Послідовна модель являє собою лінійний стек шарів, і шари можна описати дуже просто.
Ось приклад з документації Keras, яка використовує model.add () для визначення двох щільних шарів в послідовної моделі:
import keras from keras.models import Sequential from keras.layers import Dense #Create Sequential model with Dense layers, using the add method model = Sequential() #Dense implements the operation: # output = activation(dot(input, kernel) + bias) #Units are the dimensionality of the output space for the layer, # which equals the number of hidden units #Activation and loss functions may be specified by strings or classes model.add(Dense(units=64, activation='relu', input_dim=100)) model.add(Dense(units=10, activation='softmax')) #The compile method configures the model’s learning process model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy']) #The fit method does the training in batches # x_train and y_train are Numpy arrays --just like in the Scikit-Learn API. model.fit(x_train, y_train, epochs=5, batch_size=32) #The evaluate method calculates the losses and metrics # for the trained model loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) #The predict method applies the trained model to inputs # to generate outputs classes = model.predict(x_test, batch_size=128)
Варто також відзначити, як мало фактичного коду в реальному коді в порівнянні, скажімо, з низькорівневими API TensorFlow. Для кожного визначення рівня потрібно один рядок коду, для компіляції (визначення процесу навчання) потрібно один рядок коду, а для підбору (навчання), оцінки (розрахунку втрат і метрик) і прогнозування вихідних даних навченої моделі потрібно по одному рядку коду.
Ми починаємо зі створення послідовної моделі, а потім додаємо шари за допомогою оператора pipe (%>%):
model <- keras_model_sequential() model %>% layer_dense(units = 256, activation = 'relu', input_shape = c(784)) %>% layer_dropout(rate = 0.4) %>% layer_dense(units = 128, activation = 'relu') %>% layer_dropout(rate = 0.3) %>% layer_dense(units = 10, activation = 'softmax')
Аргумент input_shape для першого шару визначає форму вхідних даних (числовий вектор довжиною 784, що представляє зображення в градаціях сірого). Останній шар виводить числовий вектор довжиною 10 (ймовірності для кожної цифри), використовуючи функцію активації softmax.
Використовуйте функцію summary (), щоб надрукувати деталі моделі:
summary(model) Model ___________________________________________________________________________ Layer (type) Output Shape Param # =================================================================== dense_1 (Dense) (None, 256) 200960 ___________________________________________________________________________ dropout_1 (Dropout) (None, 256) 0 ___________________________________________________________________________ dense_2 (Dense) (None, 128) 32896 ___________________________________________________________________________ dropout_2 (Dropout) (None, 128) 0 ___________________________________________________________________________ dense_3 (Dense) (None, 10) 1290 =================================================================== Total params: 235,146 Trainable params: 235,146 Non-trainable params: 0 ___________________________________________________________________________
Потім скомпілюйте модель з відповідною функцією втрат, оптимізатором і метриками:
model %>% compile( loss = 'categorical_crossentropy', optimizer = optimizer_rmsprop(), metrics = c('accuracy')
Розпізнавання зображень з використанням навченої моделі
Ми можемо вивчити основи Keras, пройшовши простий приклад: розпізнавання рукописних цифр з набору даних MNIST.
MNIST складається з 28 x 28 px зображень в градаціях сірого, наприклад:
5 0 4 1
Набір даних також включає в себе мітки для кожного зображення, які вказують нам, яка це цифра. Наприклад, мітки для зображень вище 5, 0, 4 і 1.
Набір даних MNIST включений в Keras і доступний за допомогою функції dataset_mnist ().
Тут ми завантажуємо набір даних, потім створюємо змінні для наших тестових і навчальних даних:
library (keras) mnist <- dataset_mnist () x_train <- mnist $ train $ x y_train <- mnist $ train $ y x_test <- mnist $ test $ x y_test <- mnist $ test $ y
Дані x - це тривимірний масив (зображення, ширина, висота) значень відтінків сірого. Щоб підготувати дані для навчання, ми конвертуємо тривимірні масиви в матриці, змінюючи ширину і висоту в одному вимірі (28x28 зображень зведені в довжину 784 вектора).
Потім ми конвертуємо значення в градаціях сірого з цілих чисел в діапазоні від 0 до 255 в значення з плаваючою комою в діапазоні від 0 до 1:
# reshape x_train <- array_reshape (x_train, c (nrow (x_train), 784)) x_test <- array_reshape (x_test, c (nrow (x_test), 784)) # rescale x_train <- x_train / 255 x_test <- x_test / 255
Зверніть увагу, що ми використовуємо функцію array_reshape (), а не функцію dim <- () для зміни форми масиву. Це робиться для того, щоб дані інтерпретувалися з використанням семантики основних рядків (на відміну від семантики основних стовпців за умовчанням в R), що, в свою чергу, є сумісним з тим, як числові бібліотеки, що викликаються Keras, інтерпретують вимірювання масиву.
Дані y є цілочисельний вектор зі значеннями в діапазоні від 0 до 9.
Щоб підготувати ці дані до навчання, ми однозначно кодируем вектори в двійкові матриці класів, використовуючи функцію Keras to_categorical ():
y_train <- to_categorical (y_train, 10) y_test <- to_categorical (y_test, 10)
Цей приклад показує, як реалізувати сверточное нейронну мережу з розпізнавання образів з Keras. Такі моделі дозволяють досягти більш високої точності, ніж стандартні повністю підключені мережі, а робота з ними займає зовсім небагато часу.
Замовляйте хостинг в компанії “Хостинг Україна”. У нас Ви зможете підібрати той пакет послуг, який максимально відповідатиме потребам вашого бізнесу.
Якісний і не дорогий SSD хостинг від 1$, VPS на SSD від 12$, Cloud (хмарний) хостинг від 3$, Хмарний VPS від 6$. Виділений сервер або dedicated server.
Просто виберіть домен, Хостинг та встановіть потрібну CMS в один клік.
Ми пропонуємо найкращий віртуальний хостинг для сайтів на Joomla, Wordpress та інших популярних CMS з підтримкою PHP, Perl, MySQL.
У нас цілодобова технічна підтримка, Яка допоможе вирішити будь-які запитання щодо хостингу або домену.