Dense
keras.layers.Dense(units, 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)
Просто обычный плотно связанный слой NN.
Dense реализует операцию: output = activation(dot(input, kernel) + bias), где активация — это функция активации по элементам, переданная в качестве аргумента активации, кернел — это матрица весов, созданная слоем, а смещение — это вектор смещения, созданный слоем (применимо только в случае, если use_bias — True).
Замечание: если вход в слой имеет ранг больше 2, то он сглаживается перед исходным точечным продуктом с кернелом
Пример
# как первый слой в последовательной модели:
model = Sequential()
model.add(Dense(32, input_shape=(16,)))# теперь модель будет принимать в качестве входных массивов фигуры (*, 16)# и выходных массивов фигуры (*, 32)
# после первого слоя, больше не нужно указывать# размер входного сигнала:
model.add(Dense(32))
Аргументы
- units: положительное целое число, размерность выходного пространства.
- activation: используемая функция активации (см. активации). Если ничего не указывать, активация не применяется (т.е. «линейная» активация: a(x) = x).
- use_bias: Булева, использует ли слой вектор смещения.
- kernel_initializer: Инициализатор для матрицы весов кернела (см. инициализаторы).
- bias_initializer: Инициализатор для вектора смещения (см. инициализаторы).
- kernel_regularizer: Функция регулялизатора, применяемая к матрице весов кернела (см. регуляризатор).
- bias_regularizer: Функция регуляризатора применяется к вектору смещения (см. регуляризатор).
- activity_regularized: Функция регулялизатора применяется к выходу слоя (его «активация»). (см. регуляризатор).
- kernel_constraint: Функция ограничения, применяемая к матрице весов кернела (см. ограничения).
- bias_constraint: Функция ограничения, применяемая к вектору смещения
- Переведено с помощью www.DeepL.com/Translator (бесплатная версия) (см ограничения).
Форма ввода
тензор nD с формой: (batch_size, …, input_dim). Наиболее распространенная ситуация — 2D-ввод с формой (batch_size, input_dim).
Форма вывода
тензор nD с формой: (размер партии, …, units). Например, для 2D-входа с формой (batch_size, input_dim) выход будет иметь форму (batch_size, units).
Activation
keras.layers.Activation(activation)
Применяет функцию активации к выводу.
Аргументы
- activation: название используемой функции активации (см.: активации), или альтернатива: Theano или TensorFlow..
Форма ввода
Произвольно. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включает ось отсчета) при использовании этого слоя в качестве первого слоя в модели.
Форма вывода
Та же форма, что и при вводе.
Dropout
keras.layers.Dropout(rate, noise_shape=None, seed=None)
Применяет исключение (дропаут) на вводе.
Dropout состоит в случайной установке доли единиц ввода в 0 при каждом обновлении во время обучения, что помогает предотвратить переобучение (оверфиттинг).
Аргументы
- rate: плавает между 0 и 1. Доля входных блоков для исключения.
- noise_shape: 1D целочисленный тензор, представляющий собой форму двоичной маски выпадения, которая будет умножаться на вход. Например, если у ваших входов есть форма (batch_size, timesteps, features) и вы хотите, чтобы маска отсева была одинаковой для всех таймсестов, вы можете использовать noise_shape=(batch_size, 1, features).
- seed: Python целое число для использования в качестве случайного сида (seed).
Ссылки
- Дропаут: Простой способ предотвратить оверфиттинг нейронных сетей.
Flatten
keras.layers.Flatten(data_format=None)
Выравнивает вход. Не влияет на размер партии.
Аргументы
- data_format: Строка, одна из channel_last (по умолчанию) или channels_first. Порядок следования размеров на входах. Назначение данного аргумента — сохранить упорядочение весов при переключении модели с одного формата данных на другой. channels_last соответствует входам с формой (пакет, …, каналы), а channels_first соответствует входам с формой (пакет, каналы, …). По умолчанию значением параметра image_data_format, найденным в конфигурационном файле Keras, является ~/.keras/keras.json. Если вы никогда не устанавливали его, то это будет «channels_last».
Пример
model = Sequential()
model.add(Conv2D(64, (3, 3),
input_shape=(3, 32, 32), padding=’same’,))# теперь: model.output_shape == (None, 64, 32, 32)
model.add(Flatten())# теперь: model.output_shape == (None, 65536)
Input
keras.engine.input_layer.Input()
Input() используется для инстанцирования тензора Keras..
Тензор Keras — это объект тензора из подложки (Theano, TensorFlow или CNTK), который мы дополняем определенными атрибутами, позволяющими построить модель Keras, просто зная входы и выходы модели.
Например, если a, b и c — тензоры Кераса, то можно сделать: model = Model(input=[a, b], output=c].
Добавлены атрибуты Кераса: Форма Кераса: Кортеж интегральной формы, распространяемый через умозаключение формы Keras-сайд. _keras_history: Из этого слоя можно рекурсивно извлечь весь граф слоя.
Аргументы
- shape: Кортеж формы (целое число), без учета размера партии. Например, shape=(32,) указывает на то, что ожидаемым входом будут партии по 32-мерным векторам.
- batch_shape: Кортеж формы (целое число), включая размер партии. Например, batch_shape=(10, 32) указывает, что ожидаемым входом будут партии с 10 32-мерными векторами. batch_shape=(None, 32) указывает, что партии с произвольным количеством 32-мерных векторов.
- name: Необязательная строка имени для слоя. Должна быть уникальной в модели (не используйте одно и то же имя дважды). Она будет автоматически сгенерирована, если не будет предоставлена.
- dtype: Тип данных, ожидаемый на входе, в виде строки (float32, float64, int32…)
- sparse: Булева, указывающая, является ли создаваемый держатель разреженным.
- tensor: Дополнительный существующий тензор для обертывания в входной слой. При установке этого параметра слой не будет создавать тензор-платформу..
Возврат
Тензор.
Пример
# это логистическая регрессия в Keras. #
x = Input(shape=(32,))
y = Dense(16, activation=’softmax’)(x)
model = Model(x, y)
Reshape
keras.layers.Reshape(target_shape)
Реформирует выход в определенную форму.
Аргументы
- target_shape: Целевая форма. Кортеж целых чисел. Не включает ось партии.
Форма ввода
Произвольно, хотя все размеры в форме входа должны быть зафиксированы. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включает ось партии) при использовании этого слоя в качестве первого слоя в модели.
Форма вывода
(batch_size,) + target_shape
Пример
# как первый слой в последовательной модели.
model = Sequential()
model.add(Reshape((3, 4), input_shape=(12,)))# now: model.output_shape == (None, 3, 4)# примечание: `None` — это измерение партии.
# как промежуточный слой в последовательной модели.
model.add(Reshape((6, 2)))# теперь: model.output_shape == (None, 6, 2)
# также поддерживает умозаключение формы, используя `-1` в качестве измерения.
model.add(Reshape((-1, 2, 2)))# теперь: model.output_shape == (None, 3, 2, 2)
Permute
keras.layers.Permute(dims)
Сохраняет размеры входного сигнала в соответствии с заданным образцом.
Полезно, например, для соединения RNN и свёртков.
Пример
model = Sequential()
model.add(Permute((2, 1), input_shape=(10, 64)))# теперь: model.output_shape == (None, 64, 10)# примечание: `None` — измерение партии
Аргументы
- dims: Кортеж целых чисел. Шаблон простановки, не включает в себя размерность образцов. Индексирование начинается с 1. Например, (2, 1) перебирает первое и второе измерение входного параметра.
Форма ввода
Произвольно. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включает ось отсчета) при использовании этого слоя в качестве первого слоя в модели.
Форма вывода
То же самое, что и Форма ввода, но с измененным порядком размеров в соответствии с заданной деталью.
RepeatVector
keras.layers.RepeatVector(n)
Повторяет ввод n раз.
Пример
model = Sequential()
model.add(Dense(32, input_dim=32))# now: model.output_shape == (None, 32)# примечание: `None` — это измерение партии.
model.add(RepeatVector(3))# теперь: model.output_shape == (None, 3, 32)
Аргументы
- n: целое число, коэффициент повторения.
Форма ввода
2D тензор формы (num_samples, features).
Форма вывода
3D тензор формы (num_samples, n, features).
Lambda
keras.layers.Lambda(function, output_shape=None, mask=None, Arguments=None)
Обертывает произвольное выражение как объект Слоя.
Примеры
# добавить слой x -> x^2
model.add(Lambda(lambda x: x ** 2))
# добавьте слой, который возвращает конкатенцию# положительной части входа и # противоположной отрицательной части.
def antirectifier(x):
x -= K.mean(x, axis=1, keepdims=True)
x = K.l2_normalize(x, axis=1)
pos = K.relu(x)
neg = K.relu(-x)
return K.concatenate([pos, neg], axis=1)
def antirectifier_output_shape(input_shape):
shape = list(input_shape)
assert len(shape) == 2 # только для 2D тензоров
shape[-1] *= 2
return tuple(shape)
model.add(Lambda(antirectifier,
output_shape=antirectifier_output_shape))
# добавьте слой, возвращающий произведение Адамара# и сумму из двух входных тензоров.
def hadamard_product_sum(tensors):
out1 = tensors[0] * tensors[1]
out2 = K.sum(out1, axis=-1)
return [out1, out2]
def hadamard_product_sum_output_shape(input_shapes):
shape1 = list(input_shapes[0])
shape2 = list(input_shapes[1])
assert shape1 == shape2 # в противном случае произведение Адамара невозможно
return [tuple(shape1), tuple(shape2[:-1])]
x1 = Dense(32)(input_1)
x2 = Dense(32)(input_2)
layer = Lambda(hadamard_product_sum, hadamard_product_sum_output_shape)
x_hadamard, x_sum = layer([x1, x2])
Аргументы
- function: Функция, которая должна быть оценена. В качестве первого аргумента принимает входной тензор или список тензоров.
- output_shape: Ожидаемая форма выхода из функции. Актуально только при использовании Theano. Может быть кортежом или функцией. Если кортеж кортежа, то он указывает только первое измерение вперед; размер образца принимается либо как вход: output_shape = (input_shape[0], ) + output_shape, либо как вход None и размер образца также None: output_shape = (None, ) + output_shape Если функция, то она указывает всю фигуру как функцию формы вывода: output_shape = f(input_shape)
- mask: Либо None (указывая на отсутствие маскировки), либо Тензор, указывающий на входную маску для встраивания..
- arguments: необязательный словарь ключевых слов для передачи в функцию.
Форма ввода
Произвольно. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включает ось отсчета) при использовании этого слоя в качестве первого слоя в модели.
Форма вывода
Указывается аргументом output_shape (или auto-inferred при использовании TensorFlow или CNTK).
ActivityRegularization
keras.layers.ActivityRegularization(l1=0.0, l2=0.0)
Слой, который применяет обновление к входной деятельности, основанной на функции затрат.
Аргументы
- l1: L1 коэффициент регуляризации (положительный флоут).
- l2: L2 коэффициент регуляризации (положительный флоут).
Форма ввода
Произвольно. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включает ось отсчета) при использовании этого слоя в качестве первого слоя в модели.
Форма вывода
Та же форма, что и при вводе.
Masking
keras.layers.Masking(mask_value=0.0)
Маскирует последовательность, используя значение маски для пропуска таймфреймов.
Если все возможности для заданного временного отрезка равны значению mask_value, то временной отрезок будет замаскирован (пропущен) во всех последующих слоях (до тех пор, пока они поддерживают маскировку).
Если какой-либо последующий слой не поддерживает маскировку, но получает такую входную маску, то исключение будет поднято.
Пример
Рассмотрим массив данных Numpy x формы (образцы, временные интервалы, возможности), который будет передан в LSTM слой. Вы хотите маскировать образец #0 в timestep #3, и образец #2 в timestep #5, потому что вам не хватает возможностей для этих примеров timesteps. Вы можете это сделать:
- установить x[0, 3, :] = 0. и x[2, 5, :] = 0.
- вставьте слой Masking со значением mask_value=0. перед слоем LSTM:
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(timesteps, features)))
model.add(LSTM(32))
Аргументы
- mask_value: Или None, или пропустить значение маски.
SpatialDropout1D
keras.layers.SpatialDropout1D(rate)
Пространственная 1D версия Dropout.
Эта версия выполняет ту же функцию, что и Dropout, однако вместо отдельных элементов выпадают целые карты 1D-функций. Если соседние кадры на картах объектов сильно коррелированы (как это обычно бывает в ранних слоях свертки), то регулярное отсеивание не приводит к регуляризации активаций, а в противном случае просто приводит к снижению эффективности обучения. В этом случае, SpatialDropout1D будет способствовать независимости между картами объектов и должен использоваться вместо этого..
Аргументы
- rate: флоут между 0 и 1. доля входных блоков для исключения.
Форма ввода
3D тензор с формой: (samples, timesteps, channels)
Форма вывода
То же, что и при вводе
Ссылки
- Эффективная локализация объектов с помощью свёрточных сетей
SpatialDropout2D
keras.layers.SpatialDropout2D(rate, data_format=None)
Пространственная 2D версия Dropout.
Эта версия выполняет ту же функцию, что и Dropout, однако вместо отдельных элементов выпадают целые карты 2D-функций. Если смежные пиксели на картах объектов сильно коррелированы (как это обычно бывает в ранних слоях свертки), то регулярное отсеивание не приводит к регуляризации активаций, а в противном случае просто приводит к снижению эффективности обучения. В этом случае, SpatialDropout2D будет способствовать независимости между картами объектов и должен использоваться вместо них.
Аргументы
- rate: флоут между 0 и 1. доля входных блоков для падения.
- data_format: ‘channels_first’ или ‘channels_last’. В режиме ‘channels_first’ размерность каналов (глубина) находится на индексе 1, в режиме ‘channels_last’ — на индексе 3. По умолчанию она равна значению image_data_format, найденному в вашем конфигурационном файле Keras по адресу ~/.keras/keras.json. Если вы никогда не устанавливали его, то это будет «channels_last».
Форма ввода
4D тензор с формов: (samples, channels, rows, cols) если data_format=’channels_first’ или 4D тензор с формов: (samples, rows, cols, channels) если data_format=’channels_last’.
Форма вывода
То же, что и при вводе
Ссылки
- Эффективная локализация объектов с помощью свёрточных сетей
SpatialDropout3D
keras.layers.SpatialDropout3D(rate, data_format=None)
Пространственная 3D версия Dropout.
Эта версия выполняет ту же функцию, что и Dropout, однако она удаляет целые карты 3D-функций вместо отдельных элементов. Если соседние воксели на картах объектов сильно коррелированы (как это обычно бывает в ранних слоях свертки), то регулярное отсеивание не приводит к регуляризации активаций, а в противном случае просто приводит к снижению эффективности обучения. В этом случае, SpatialDropout3D будет способствовать независимости между картами объектов и должен использоваться вместо них.
Аргументы
- rate: флоут между 0 и 1. доля входных блоков для исключения.
- data_format: ‘channels_first’ или ‘channels_last’. В режиме ‘channels_first’ размерность каналов (глубина) находится на индексе 1, в режиме ‘channels_last’ — на индексе 4. По умолчанию она равна значению image_data_format, найденному в вашем конфигурационном файле Keras по адресу ~/.keras/keras.json. Если вы никогда не устанавливали его, то это будет «channels_last».
Форма ввода
5D тензор с формой: (samples, channels, dim1, dim2, dim3) если data_format=’channels_first’ или тензор с формой: (samples, dim1, dim2, dim3, channels) если data_format=’channels_last’.
Форма вывода
То же, что и при вводе
Ссылки
- Эффективная локализация объектов с помощью свёрточных сетей