Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  Vodafone
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

Keras - Установка и настройка

Блог Программирование Keras - Установка и ...
  1. Как начать работу с Keras?
  2. Установка Keras
  3. Загрузка данных с диска
  4. Определение архитектуры модели Keras
  5. Подготовка модели к работе
  6. Пример MNIST
  7. Подготовка данных

Если вы пристально следите за технологической сценой, вы наверняка слышали термин «глубокое обучение». 

Эта технология произвела революцию в искусственном интеллекте, помогая человечеству создавать машины и системы, о которых раньше мы только мечтали. По сути, Deep Learning - это подсистема машинного обучения, в которой используются глубокие искусственные нейронные сети. 

Простой в использовании и широко поддерживаемый, Keras делает работу с глубоким изучением очень удобной и эффективной.

Как начать работу с Keras?

Глубокие нейронные сети все больше входят в моду, но сложность освоения их основных структур является серьезным препятствием для использования многими разработчиками, которые плохо знакомы с машинным обучением. 

На протяжении 2010-2020 годов было предложено несколько улучшенных и упрощенных высокоуровневых API для построения моделей нейронных сетей. Все они в целом  похожи, но демонстрируют значительные различия при ближайшем рассмотрении.

Keras - один из ведущих API-интерфейсов нейронных сетей высокого уровня. Он написан на Python и поддерживает несколько внутренних вычислительных движков нейронных сетей. Основная идея разработки Keras - облегчить эксперименты путем быстрого прототипирования. Способность перейти от идеи к результату с наименьшей возможной задержкой является ключом к хорошим исследованиям машинного интеллекта.

По сути - это просто высокоуровневая библиотека, построенная на основе Theano или TensorFlow. Keras предоставляет API типа scikit-learn для построения нейронных сетей. Разработчики могут использовать Keras для быстрого построения нейронных сетей, не беспокоясь о математических аспектах тензорной алгебры, численных методах и методах оптимизации.

Начать работу с Keras без проблем может любой разработчик, который уже имел дело со средой Python.

Установка Keras

Для начала работы вам потребуется следующее предустановленное программное обеспечение:

  • язык Python 2.7+ (Python 3 также вполне подойдет);
  • последнюю версию научной библиотеки SciPy с NumPy;
  • последнюю версию библиотеки матриц Matplotlib – можно использовать по желанию, нужна для визуализации ресерч-анализа данных;
  • последнюю версию библиотеки численных вычислений Theano.

Далее установите пакет 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 - это модель, способ организации слоев. В 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')

Распознавание изображений с использованием обученной модели

Пример MNIST

Мы можем изучить основы 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. Такие модели позволяют достичь более высокой точности, чем стандартные полностью подключенные сети, а работа с ними занимает совсем немного времени.

 

Только зарегистрированные пользователи могут оставлять комментарии

Подпишитесь на рассылку

Будем присылать анонсы новых статей и полезные советы раз в неделю

Присоединяйтесь к нам в соцсетях