Слои являются основными элементами, необходимыми при создании нейронных сетей. Последовательные слои отвечают за архитектуру модели глубокого обучения. Каждый из них выполняет вычисления на основе данных, полученных из предыдущего. Затем информация передается дальше. В конце концов, последний слой выдает требуемый результат. В этом материале разберем типы слоев Keras, их свойства и параметры.
Слои Keras
Для определения или создания слоя Keras нужна следующая информация:
- Форма ввода: для понимания структуры входящей информации
- Количество: для определения количества узлов/нейронов в слое
- Инициализатор: для определения весов каждого входа, что важно для выполнения вычислений
- Активаторы: для преобразования входных данных в нелинейный формат, чтобы каждый нейрон мог обучаться эффективнее
- Ограничители: для наложения ограничений на веса при оптимизации
- Регуляторы: для применения штрафов к параметрам во время оптимизации
Различные слои в Keras
Основные слои Keras
Dense
Вычисляет вывод следующим образом:
output=activation(dot(input,kernel)+bias)
Здесь activation
— это активатор, а kernel
— взвешенная матрица, применяемая к входящим тензорам. bias
— это константа, помогающая настроить модель наилучшим образом.
Dense-слой получает информацию со всех узлов предыдущего слоя. Вот его аргументы и значения по умолчанию:
Dense(units, activation=NULL, use_bias=TRUE,kernel_initializer='glorot_uniform',
bias_regularizer=NULL, activity_regularizer=NULL,
kernel_constraint=NULL, bias_constrain=NULL)
Activation
Используется для применения функции активации к выводу. То же самое, что передача активации в Dense-слой. Имеет следующие аргументы:
Activation(activation_function)
Если функцию активации не передать, то будет выполнена линейная активация.
Dropout
Dropout
применяется в нейронных сетях для решения проблемы переобучения. Для этого он случайным образом выбирает доли единиц и при каждом обновлении назначает им значение 0.
Аргументы:
Dropout(rate, noise_shape=NULL, seed=NULL)
Flatten
Flatten
используется для конвертации входящих данных в меньшую размерность.
Например, входящий слой размерности (batch_size, 3,2)
«выравнивается» для вывода размерности (batch_size, 6)
. Он имеет следующие аргументы.
Flatten(data_format=None)
Input
Этот слой используется в Keras для создания модели на основе ввода и вывода модели. Он является точкой входа в модель графа.
Аргументы:
Input(shape, batch_shape, name, dtype,
sparse=FALSE,tensor=NULL)
Reshape
Изменить вывод под конкретную размерность
Аргумент:
Reshape(target_shape)
Выдаст следующий результат:
(batch_size,)+ target_shape
Permute
Поменять ввод для соответствия конкретному шаблону. Этот же слой используется для изменения формы ввода с помощью определенных шаблонов.
Аргументы:
Permute(dims)
Lambda
Слои Lambda
используются для создания дополнительных признаков слоев, которых нет в Keras.
Аргументы:
Lambda(lambda_fun,output_shape=None, mask=None, arguments=None)
Masking
Пропустить временной промежуток, если все признаки равны mask_value
.
Аргументы:
Masking(mask_value=0.0)
Сверточные сети Keras
Conv1D и Conv2D
Здесь определяется взвешенное ядро. Производится операция свертки, результатом которой становятся тензоры.
Аргументы:
Conv1D(filters,kernel_size,strides=1, padding='valid',
data_format='channels_last', dilation_rate=1, activation=None,
use_bias=True, kernel_initializer='glorot_uniform',
bias_initializer='zeros', kernel_regularizer=None,
bias_regularizer=None, activity_regularizer=None,
kernel_constraint=None, bias_constraint=None)
Conv2D(filters,kernel_size,strides=(1,1) , padding='valid',
data_format='channels_last', dilation_rate=(1,1) ,
activation=None, use_bias=True,
kernel_initializer='glorot_uniform', bias_initializer='zeros',
kernel_regularizer=None, bias_regularizer=None,
activity_regularizer=None, kernel_constraint=None,
bias_constraint=None)
Слои пулинга (подвыборки)
Они используются для уменьшения размера ввода и извлечения важной информации.
MaxPooling1D и MaxPooling2D
Извлекаем максимум
Аргументы:
MaxPooling1D(pool_size=2, strides=None, padding='valid',
data_format='channels_last')
MaxPooling2D(pool_size=(2,2), strides=None, padding='valid',
data_format='channels_last')
AveragePooling1D и AveragePooling2D
Извлекаем среднее
Аргументы:
AveragePooling1D(pool_size=2, strides=None, padding='valid',
data_format='channels_last')
AveragePooling1D(pool_size=(2,2), strides=None, padding='valid',
data_format=None)
Рекуррентный слой
Этот слой используется для вычисления последовательных данных — временного ряда или естественного языка.
SimpleRNN
Это полностью связанная RNN (рекуррентная нейронная сеть), где вывод подается обратно в качестве входящих данных
Аргументы:
SimpleRNN(units, activation, use_bias, kernel_initializer,
recurrent_initializer, bias_initializer, kernel_regularizer,
recurrent_regularizer, bias_regularizer, activity_regularizer,
kernel_constraint, recurrent_constraint, bias_constraint,
dropout, recurrent_dropout, return_sequences, return_state)
LSTM
Это увеличенная форма RNN с хранилищем для информации.
LSTM(units, activation , recurrent_activation, use_bias,
kernel_initializer, recurrent_initializer, bias_initializer,
unit_forget_bias, kernel_regularizer, recurrent_regularizer,
bias_regularizer, activity_regularizer, kernel_constraint,
recurrent_constraint, bias_constraint, dropout,
recurrent_dropout, implementation, return_sequences,
return_state)
В Keras есть и другие слои, но чаще всего используются описанные выше.
Выводы
Этот материал посвящен концепции слоев в моделях Keras. Вы узнали о требованиях для построения слоя, а также об их типах: основные слои, сверточные слои, подвыборки, рекуррентные слои, а также их свойства и параметры.