Spec-Zone.ru › TensorFlow 2.9

tf.keras.layers.Lambda

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

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

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

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

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

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

tf.compat.v1.keras.layers.Lambda

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

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

Предупреждение: tf.keras.layers.Lambda слои имеют ограничения при (де)сериализации!

Основная причина использования наследования от tf.keras.layers.Layer вместо Lambda слоев заключается в сохранении и инспектировании модели. 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 возможно, эта практика не рекомендуется, так как она может легко привести к ошибкам. Например, рассмотрите следующий слой:

scale = tf.Variable(1.)
scale_layer = tf.keras.layers.Lambda(lambda x: x * scale)

Поскольку слой scale_layer не отслеживает переменную scale, она не будет отображаться в scale_layer.trainable_weights и, следовательно, не будет обучаться, если scale_layer используется в модели.

Более подходящий подход — создание наследуемого слоя:

class ScaleLayer(tf.keras.layers.Layer):
  def __init__(self):
    super(ScaleLayer, self).__init__()
    self.scale = tf.Variable(1.)

  def call(self, inputs):
    return inputs * self.scale

В общем случае слои 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

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

Spec-Zone.ru

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