Если вы пристально следите за технологической сценой, вы наверняка слышали термин «глубокое обучение».
Эта технология произвела революцию в искусственном интеллекте, помогая человечеству создавать машины и системы, о которых раньше мы только мечтали. По сути, 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.
У нас круглосуточная техническая поддержка, которая поможет решить любые возникшие вопросы относительно хостинга или домена.