Перейти к содержанию

Основные слои

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).


[source]

Activation

keras.layers.Activation(activation)

Применяет функцию активации к выводу.

Аргументы

  • activation: название используемой функции активации (см.: активации), или альтернатива: Theano или TensorFlow..

Форма ввода

Произвольно. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включает ось отсчета) при использовании этого слоя в качестве первого слоя в модели.

Форма вывода

Та же форма, что и при вводе.


[source]

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).

Ссылки

  • Дропаут: Простой способ предотвратить оверфиттинг нейронных сетей.

[source]

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)


[source]

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)


[source]

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)


[source]

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 (кортеж целых чисел, не включает ось отсчета) при использовании этого слоя в качестве первого слоя в модели.

Форма вывода

То же самое, что и Форма ввода, но с измененным порядком размеров в соответствии с заданной деталью.


[source]

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).


[source]

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).


[source]

ActivityRegularization

keras.layers.ActivityRegularization(l1=0.0, l2=0.0)

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

Аргументы

  • l1: L1 коэффициент регуляризации (положительный флоут).
  • l2: L2 коэффициент регуляризации (положительный флоут).

Форма ввода

Произвольно. Используйте ключевой аргумент input_shape (кортеж целых чисел, не включает ось отсчета) при использовании этого слоя в качестве первого слоя в модели.

Форма вывода

Та же форма, что и при вводе.


[source]

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, или пропустить значение маски.

[source]

SpatialDropout1D

keras.layers.SpatialDropout1D(rate)

Пространственная 1D версия Dropout.

Эта версия выполняет ту же функцию, что и Dropout, однако вместо отдельных элементов выпадают целые карты 1D-функций. Если соседние кадры на картах объектов сильно коррелированы (как это обычно бывает в ранних слоях свертки), то регулярное отсеивание не приводит к регуляризации активаций, а в противном случае просто приводит к снижению эффективности обучения. В этом случае, SpatialDropout1D будет способствовать независимости между картами объектов и должен использоваться вместо этого..

Аргументы

  • rate: флоут между 0 и 1. доля входных блоков для исключения.

Форма ввода

3D тензор с формой: (samples, timesteps, channels)

Форма вывода

То же, что и при вводе

Ссылки

  • Эффективная локализация объектов с помощью свёрточных сетей

[source]

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’.

Форма вывода

То же, что и при вводе

Ссылки

  • Эффективная локализация объектов с помощью свёрточных сетей

[source]

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’.

Форма вывода

То же, что и при вводе

Ссылки

  • Эффективная локализация объектов с помощью свёрточных сетей