Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40_алгоритмов_Python.pdf
Скачиваний:
8
Добавлен:
07.04.2024
Размер:
13.02 Mб
Скачать

Инструменты и фреймворки

247

Функция y выглядит следующим образом:

Ее можно реализовать с помощью следующего кода Python:

def tanh(x):

numerator = 1-np.exp(-2*x) denominator = 1+np.exp(-2*x) return numerator/denominator

Перейдем теперь к функции softmax.

Softmax

Иногда нам требуется более двух уровней для вывода функции активации. В таких случаях используется функция softmax. Она лучше всего подходит для задач многоклассовой классификации. Предположим, что у нас есть n классов

ивходные значения. Входные значения отображают классы следующим образом: x = {x(1), x(2), .... x(n)}.

Softmax основана на теории вероятности. Выходная вероятность e-го класса softmax рассчитывается следующим образом:

Для бинарных классификаторов функция активации в конечном слое будет сигмоидной, а для многоклассовых классификаторов — softmax.

ИНСТРУМЕНТЫ И ФРЕЙМВОРКИ

В этом разделе мы подробно рассмотрим фреймворки и инструменты, доступные для реализации нейронных сетей.

К настоящему времени разработано множество различных фреймворков для реализации нейронных сетей. Каждый из них имеет свои сильные и слабые стороны. В этом разделе мы сосредоточимся на Keras с серверной частью TensorFlow.

248

Глава 8. Алгоритмы нейронных сетей

Keras

Keras — одна из самых популярных и простых в использовании библиотек ней­ ронных сетей, написанная на Python. Она была создана с прицелом на простоту использования и предлагает самый быстрый способ реализации глубокого обу­ чения. Keras предоставляет только высокоуровневые операции и применяется на уровне модели.

Выбор серверного движка для Keras

Keras требуется библиотека глубокого обучения более низкого уровня для вы­ полнения манипуляций с тензорами. Эта библиотека глубокого обучения более низкого уровня называется серверным движком или бэкенд-движком (backend engine). Внутренние движки, доступные для Keras:

zz TensorFlow (www.tensorflow.org). Это самый популярный фреймворк в своем классе, с открытым исходным кодом, созданный Google;

zz Theano (https://github.com/Theano/Theano). Разработан в лаборатории MILA в Университете Монреаля;

zzMicrosoft Cognitive Toolkit (CNTK). Разработан корпорацией Microsoft.

Формат этого модульного стека технологий глубокого обучения показан на следующей схеме (рис. 8.12).

Рис. 8.12

Инструменты и фреймворки

249

Преимущество модульной архитектуры глубокого обучения заключается в том, что бэкенд-движок Keras можно изменять без переписывания кода. Например, если для конкретной задачи TensorFlow подходит лучше, чем Theano, можно просто сменить серверную часть на TensorFlow.

Низкоуровневые слои стека глубокого обучения

Все три упомянутых серверных движка способны работать как на центральном процессоре (CPU), так и на графическом (GPU), используя низкоуровневые слои стека. Для CPU существует библиотека тензорных операций, называемая Eigen. Для GPU TensorFlow использует библиотеку CUDA Deep Neural Network (cuDNN) от NVIDIA.

Определение гиперпараметров

Гиперпараметр — это параметр, значение которого выбирается перед запуском процесса обучения. Сначала мы задаем значения на основе здравого смысла, а затем пытаемся их оптимизировать. Для нейронных сетей важными являются следующие гиперпараметры:

zz функция активации; zz скорость обучения;

zz количество скрытых слоев;

zzколичество нейронов в каждом скрытом слое.

Давайте выясним, как строится модель с помощью Keras.

Построение модели Keras

Создание завершенной модели Keras состоит из трех этапов:

1.Конструирование слоев.

Существуют два способа построения модели с использованием Keras:

yy Последовательный API (Sequential API)1. Позволяет создавать модели для линейного стека слоев. Это типичный выбор при построении относитель­ но простых моделей (рис. 8.13).

1 API, application programming interface — интерфейс программирования приложе­ ний. — Примеч. ред.

250

Глава 8. Алгоритмы нейронных сетей

 

 

 

 

Рис. 8.13

Обратите внимание, что мы создали три слоя: первые два имеют функцию активации ReLU, а третий — softmax.

yy Функциональный API (Functional API). Позволяет проектировать модели для ациклических графов. С его помощью могут быть созданы более сложные модели (рис. 8.14).

Рис. 8.14

Одну и ту же нейронную сеть можно спроектировать, используя как после­ довательные, так и функциональные API. Выбор того или иного подхода не влияет на производительность.