Spec-Zone.ru › TensorFlow 1.15

tf.keras.layers.Lambda

Просмотреть исходный код на GitHub

Оборачивает произвольные выражения как объект Layer.

Наследуется от: Layer

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.keras.layers.Lambda, `tf.compat.v2.keras.layers.Lambda`

tf.keras.layers.Lambda(
    function, output_shape=None, mask=None, arguments=None, **kwargs
)

Слой Lambda существует для того, чтобы произвольные функции TensorFlow можно было использовать при создании моделей Sequential и Functional API. Lambda слои лучше всего подходят для простых операций или быстрых экспериментов. Для более сложных случаев рекомендуется наследование от keras.layers.Layer. Одна из причин этого заключается в том, что при сохранении модели Lambda слои сохраняются путем сериализации байткода Python, в то время как настраиваемые слои сохраняются путем переопределения метода get_config и поэтому являются более переносимыми. Модели, которые полагаются на настраиваемые слои, также часто легче визуализировать и понять.

Примеры:

# add a x -> x^2 layer
model.add(Lambda(lambda x: x ** 2))
# add a layer that returns the concatenation
# of the positive part of the input and
# the opposite of the negative part

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)

model.add(Lambda(antirectifier))

Переменные могут быть созданы внутри слоя Lambda. Как и в других слоях, эти переменные будут созданы только один раз и повторно использоваться, если слой Lambda вызывается для новых входных данных. Если необходимо создать более одной переменной в данном экземпляре Lambda, убедитесь, что каждая переменная имеет разное имя. Обратите внимание, что вызов подслоев внутри слоя Lambda не поддерживается.

Пример создания переменной:

def linear_transform(x):
  v1 = tf.Variable(1., name='multiplier')
  v2 = tf.Variable(0., name='bias')
  return x*v1 + v2

linear_layer = Lambda(linear_transform)
model.add(linear_layer)
model.add(keras.layers.Dense(10, activation='relu'))
model.add(linear_layer)  # Reuses existing Variables

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

Аргументы
function Функция, подлежащая вычислению. В качестве первого аргумента принимает тензор входных данных.
output_shape Ожидаемая форма выходных данных функции. Этот аргумент может быть выведен, если не указан явно. Может быть кортежем или функцией. Если кортежем, то он задаёт только размерность с первого элемента; размерность выборки предполагается либо такой же, как у входных данных: output_shape = (input_shape[0], ) + output_shape , либо, если входные данные являются None, и размерность выборки также None: output_shape = (None, ) + output_shape Если функцией, то она задаёт всю форму как функцию формы входных данных: output_shape = f(input_shape)
mask Либо None (указывая отсутствие маскирования), либо вызываемый объект с той же сигнатурой, что и метод слоя compute_mask, или тензор, который будет возвращен как выходная маска независимо от входных данных.
arguments Необязательный словарь ключевых аргументов, которые необходимо передать функции.

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

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/keras/layers/Lambda

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API