Keras — это высокоуровневый API для определения и обучения нейронных сетей. Проще говоря, Keras — это высокоуровневая инкапсуляция сред глубокого обучения, таких как TensorFlow, для обеспечения более элегантного и удобного дизайна интерфейса. Поэтому Keras не может работать независимо и нуждается в поддержке базовой среды, которой может быть TensorFlow, CNTK, Theano. Рекомендуется использовать TensorFlow, и в этой статье в качестве примера также используется TensorFlow.
1. Предварительные знания
1.1 Что такое нейронная сеть?
В области искусственного интеллекта, который обычно называют «нейронной сетью», полным термином должно быть «искусственная нейронная сеть». Это технология машинного обучения, разработанная людьми для имитации нервной системы человека с использованием компьютерных алгоритмов, чтобы позволить машинам иметь человеческое интеллектуальное поведение. Нервная система человека представляет собой сложную сетевую систему, состоящую из нейронов, связанных друг с другом.
На рисунке ниже показана структура нейронов в головном мозге Нейрон получает входные данные (нервные импульсы) от своих множественных дендритов (ДЕНДРИТОВ), и после обработки определяется, следует ли выводить нервные импульсы через аксон (АКСОН).
1.2 Персептрон
Точно так же, как нейрон является основной единицей, составляющей нервную систему мозга, персептрон является основной единицей, составляющей искусственную нейронную сеть. Он принимает несколько входов (), через линейную функцию и функцию активации (шаговая функция является своего рода функцией активации), получить выход
.
Линейная функция:
в,и
вектор,
,
, поэтому его также можно расширить следующим образом:
Step Function — это ступенчатая функция, в нейронных сетях этот тип функции обычно называют функцией активации:
1.3 Нейронные сети и линейная алгебра
Математический принцип нейронных сетей — линейная алгебра. В одном персептроне ввод-вывод, на самом деле, входной векторс вектором веса
Скалярный продукт плюс единица смещения
(скаляр). Для согласованности представления единица смещения также обычно рассматривается как, вход равен 1, вес равен
специальный блок.
Один перцептрон соответствует одному выходу, а несколько персептронов с разными весовыми векторами получают один и тот же входной вектор и соответствуют нескольким выходам, поэтому группа персептронов составляет слой нейронной сети. По сравнению с одним персептроном, слой может получать несколько входных данных и несколько выходных, а веса теперь представлены не векторами, а матрицами. Следовательно, математическая модель слоя состоит в том, что входной вектор умножается на весовую матрицу для получения выходного вектора.
1.4 Глубокие нейронные сети
Так называемая глубокая обучающая или глубокая нейронная сеть представляет собой многослойный персептрон, состоящий из нескольких перцептивных слоев, соединенных встык, то есть выход предыдущего слоя соответствует входу следующего слоя. Среди них первый слой также называется входным слоем (Input Layer), последний слой также называется выходным слоем (Output Layer), средний слой также называется скрытым слоем (Hidden Layer).
2. Подготовка
Следующим шагом после получения базовой концепции глубокой нейронной сети будет использование Keras для построения модели глубокой нейронной сети. Перед этим вам необходимо установить соответствующее программное обеспечение и пакеты Python.
Если вы не установили Anaconda, рекомендуется сначала установить ее, адрес для скачивания:Woohoo.anaconda.com/Третий день не упоминается....
Убедившись, что Anaconda установлена, откройте терминал командной строки и введите следующие команды, чтобы создать среду и установить соответствующие пакеты Python.
conda create -n DNN python=3.6
conda activate DNN
pip install --upgrade pip
pip install numpy pandas matplotlib jupyter notebook tensorflow Keras
pip install seaborn
pip freeze | grep -Ei "numpy|pandas|matplotlib|tensorflow|Keras"
out:
Keras==2.3.0
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
matplotlib==3.1.1
numpy==1.17.2
pandas==0.25.1
tensorflow==1.14.0
tensorflow-estimator==1.14.0
3. Создайте модель глубокой нейронной сети с помощью Keras
Keras предоставляет два способа создания нейронных сетей: последовательная модель и функциональный API.
Следующие два метода используются для создания простейшей трехслойной модели нейронной сети, 1 входного слоя, 1 скрытого слоя и 1 выходного слоя, где входной размер (форма) равен 100, выходной размер равен 10, а размер скрытого слоя это 32.
3.1 Последовательная модель
from keras.models import Sequential
from keras.layers.core import Dense
Создайте модель последовательности:
model = Sequential()
Добавьте слои к модели. Keras автоматически определит форму всех последующих слоев на основе слоя 1. Это означает, что вам нужно только установить входной размер для слоя 1.
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
Скомпилируйте модель, укажите функцию потерь, оптимизатор и индекс оценки.
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
Посмотреть схему модели:
model.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 32) 3232
_________________________________________________________________
dense_2 (Dense) (None, 10) 330
=================================================================
Total params: 3,562
Trainable params: 3,562
Non-trainable params: 0
_________________________________________________________________
3.2 Функциональный API (Функциональный API)
Функциональный API Keras используется для определения более сложных моделей. Примерами являются модели с несколькими выходами, ориентированные ациклические графы или модели с общими слоями.
from keras.layers import Input, Dense
from keras.models import Model
# 返回一个张量
inputs = Input(shape=(100, ))
# 给模型层实例,传入输入张量,返回一个输出张量
output_1 = Dense(32, activation='relu')(inputs)
outputs = Dense(10, activation='softmax')(output_1)
# 根据输入和输出,创建一个包含一个输入层,一个隐藏层和一个输出层的模型
model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 查看模型结构
model.summary()
Model: "model_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 100) 0
_________________________________________________________________
dense_3 (Dense) (None, 32) 3232
_________________________________________________________________
dense_4 (Dense) (None, 10) 330
=================================================================
Total params: 3,562
Trainable params: 3,562
Non-trainable params: 0
_________________________________________________________________
Эпилог
В этой статье представлены основные концепции и математические принципы глубоких нейронных сетей с точки зрения новичка, а затем создаются модели той же структуры с использованием двух методов, предоставляемых очень популярной структурой глубокого обучения Keras, помогая читателям перейти от теории к практике. Теория эзотерична и сложна для понимания, но благодаря хорошо упакованной структуре горячую технологию глубокого обучения можно применить на практике в кратчайшие сроки. Я надеюсь, что эта статья поможет читателям, интересующимся глубоким обучением, сделать первый шаг в зал глубокого обучения.
Отсканируйте QR-код в WeChat, чтобы получить оригиналы новейших технологий