Spec-Zone.ru › TensorFlow 2.9

tf.nn.RNNCellResidualWrapper

Обёртка RNNCell, которая гарантирует, что входные данные ячейки добавляются к выходам.

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

tf.nn.RNNCellResidualWrapper(
    *args, **kwargs
)
Аргументы
cell Экземпляр RNNCell.
residual_fn (Необязательно) Функция для отображения необработанных входных данных и необработанных выходных данных ячейки в фактические выходные данные ячейки остаточной сети. По умолчанию вызывается nest.map_structure по (lambda i, o: i + o), входы и выходы.
**kwargs Словарь ключевых аргументов для базового слоя.
Атрибуты
activity_regularizer Необязательная функция регуляризации для выхода этого слоя.
compute_dtype Тип данных вычислений слоя.

Это эквивалентно Layer.dtype_policy.compute_dtype. Если не используется смешанная точность, это то же самое, что и Layer.dtype, тип данных весов.

Слои автоматически преобразуют свои входные данные в тип вычислений, что приводит к тому, что вычисления и вывод будут в типе вычислений. Это делается базовым классом Layer в Layer.call, поэтому вам не нужно вставлять эти преобразования, если вы реализуете свой собственный слой.

Слои часто выполняют некоторые внутренние вычисления с большей точностью, когда compute_dtype равен float16 или bfloat16 для повышения числовой устойчивости. Выход по-прежнему обычно будет float16 или bfloat16 в таких случаях.

dtype Тип данных весов слоя.

Это эквивалентно Layer.dtype_policy.variable_dtype. Если не используется смешанная точность, это то же самое, что и Layer.compute_dtype, тип данных вычислений слоя.

dtype_policy Политика типа данных, связанная с этим слоем.

Это экземпляр tf.keras.mixed_precision.Policy.

dynamic Является ли слой динамическим (только для режима eager); устанавливается в конструкторе.
input Извлекает входной(ые) тензор(ы) слоя.

Применимо только если у слоя ровно один вход, т.е. если он подключен к одному входящему слою.

input_spec Экземпляр(ы) InputSpec, описывающий формат входных данных для этого слоя.

При создании подкласса слоя, вы можете установить self.input_spec, чтобы слой мог выполнять проверки совместимости входных данных при вызове. Рассмотрим слой Conv2D: он может вызываться только на единственном входном тензоре ранга 4. Таким образом, вы можете установить в __init__():

self.input_spec = tf.keras.layers.InputSpec(ndim=4)

Теперь, если вы попытаетесь вызвать слой на вход, который не имеет ранга 4 (например, входной формы (2,), он выведет понятную ошибку:

ValueError: Input 0 of layer conv2d is incompatible with the layer:
expected ndim=4, found ndim=1. Full shape received: [2]

Проверки входных данных, которые можно указать с помощью input_spec, включают:

  • Структура (например, один вход, список из 2 входов и т.д.)
  • Форма
  • Ранг (ndim)
  • Тип данных

Для получения дополнительной информации см. tf.keras.layers.InputSpec.

losses Список потерь, добавленных с помощью API add_loss().

Переменные тензоры регуляризации создаются при обращении к этому свойству, поэтому это безопасно в режиме eager: обращение к losses в tf.GradientTape будет распространять градиенты обратно к соответствующим переменным.

class MyLayer(tf.keras.layers.Layer):
  def call(self, inputs):
    self.add_loss(tf.abs(tf.reduce_mean(inputs)))
    return inputs
l = MyLayer()
l(np.ones((10, 1)))
l.losses
[1.0]
inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(10)(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
# Activity regularization.
len(model.losses)
0
model.add_loss(tf.abs(tf.reduce_mean(x)))
len(model.losses)
1
inputs = tf.keras.Input(shape=(10,))
d = tf.keras.layers.Dense(10, kernel_initializer='ones')
x = d(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
# Weight regularization.
model.add_loss(lambda: tf.reduce_mean(d.kernel))
model.losses
[<tf.Tensor: shape=(), dtype=float32, numpy=1.0>]
metrics Список метрик, добавленных с помощью API add_metric().
input = tf.keras.layers.Input(shape=(3,))
d = tf.keras.layers.Dense(2)
output = d(input)
d.add_metric(tf.reduce_max(output), name='max')
d.add_metric(tf.reduce_min(output), name='min')
[m.name for m in d.metrics]
['max', 'min']
non_trainable_weights Список всех весов, не участвующих в обучении, отслеживаемых этим слоем.

Веса, не участвующие в обучении, не обновляются во время обучения. Они должны обновляться вручную в call().

output Извлекает выходной(ые) тензор(ы) слоя.

Применимо только если у слоя ровно один выход, т.е. если он подключен к одному входящему слою.

output_size
state_size
supports_masking Поддерживает ли этот слой вычисление маски с помощью compute_mask.
trainable
trainable_weights Список всех обучаемых весов, отслеживаемых этим слоем.

Обучаемые веса обновляются с помощью градиентного спуска во время обучения.

variable_dtype Псевдоним Layer.dtype, тип данных весов.
weights Возвращает список всех переменных/весов слоя.

Методы

add_loss

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

add_loss(
    losses, **kwargs
)

Добавляет тензор(ы) потерь, потенциально зависящие от входных данных слоя.

Некоторые потери (например, потери регуляризации активности) могут зависеть от входных данных, передаваемых при вызове слоя. Следовательно, при повторном использовании одного и того же слоя с различными входами a и b, некоторые записи в layer.losses могут зависеть от a, а некоторые от b. Этот метод автоматически отслеживает зависимости.

Этот метод может использоваться внутри функции call подклассированного слоя или модели, в этом случае losses должен быть тензором или списком тензоров.

Пример:

class MyLayer(tf.keras.layers.Layer):
  def call(self, inputs):
    self.add_loss(tf.abs(tf.reduce_mean(inputs)))
    return inputs

Этот метод также можно вызвать непосредственно на модели Functional Model во время построения. В этом случае все тензоры потерь, переданные в эту модель, должны быть символичными и иметь возможность отслеживания до входных данных модели Input. Эти потери становятся частью топологии модели и отслеживаются в get_config.

Пример:

inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(10)(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
# Activity regularization.
model.add_loss(tf.abs(tf.reduce_mean(x)))

Если это не так для ваших потерь (если, например, ваши потери ссылаются на Variable одного из слоёв модели), вы можете обернуть свои потери в лямбда-функцию без аргументов. Такие потери не отслеживаются как часть топологии модели, так как не могут быть сериализованы.

Пример:

inputs = tf.keras.Input(shape=(10,))
d = tf.keras.layers.Dense(10)
x = d(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
# Weight regularization.
model.add_loss(lambda: tf.reduce_mean(d.kernel))
Аргументы
losses Тензор потерь или список/кортеж тензоров. Вместо тензоров потери также могут быть вызываемыми функциями без аргументов, которые создают тензор потерь.
**kwargs Дополнительные ключевые аргументы для обратной совместимости. Принятые значения: inputs - устаревший, будет автоматически определен.

add_metric

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

add_metric(
    value, name=None, **kwargs
)

Добавляет тензор метрики в слой.

Этот метод может быть использован внутри метода call() подклассированного слоя или модели.

class MyMetricLayer(tf.keras.layers.Layer):
  def __init__(self):
    super(MyMetricLayer, self).__init__(name='my_metric_layer')
    self.mean = tf.keras.metrics.Mean(name='metric_1')

  def call(self, inputs):
    self.add_metric(self.mean(inputs))
    self.add_metric(tf.reduce_sum(inputs), name='metric_2')
    return inputs

Этот метод также может быть вызван напрямую на модели Functional Model во время построения. В этом случае любой тензор, переданный в эту модель, должен быть символическим и должен иметь возможность отслеживания до входных данных модели Input. Эти метрики становятся частью топологии модели и отслеживаются при сохранении модели с помощью save().

inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(10)(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
model.add_metric(math_ops.reduce_sum(x), name='metric_1')
Примечание: Вызов add_metric() с результатом объекта метрики на модели Functional Model, как показано в примере ниже, не поддерживается. Это происходит потому, что мы не можем отследить тензор результата метрики до входов модели.
inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(10)(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
model.add_metric(tf.keras.metrics.Mean()(x), name='metric_1')
Аргументы
value Тензор метрики.
name Название метрики.
**kwargs Дополнительные ключевые аргументы для обратной совместимости. Допустимые значения: aggregation - Когда тензор value не является результатом вызова экземпляра keras.Metric, он будет агрегироваться по умолчанию с помощью keras.Metric.Mean.

build

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

build(
    inputs_shape
)

Строит оборачиваемую ячейку.

compute_mask

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

compute_mask(
    inputs, mask=None
)

Вычисляет тензор маски вывода.

Аргументы
inputs Тензор или список тензоров.
mask Тензор или список тензоров.
Возвращает
None или тензор (или список тензоров, по одному на каждый выходной тензор слоя).

compute_output_shape

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

compute_output_shape(
    input_shape
)

Вычисляет форму вывода слоя.

Если слой не был построен, этот метод вызовет build для слоя. Предполагается, что слой будет позже использован с входными данными, соответствующими предоставленной здесь форме входа.

Аргументы
input_shape Кортеж формы (кортеж целых чисел) или список кортежей форм (по одному на каждый выходной тензор слоя). Кортежи формы могут включать None для свободных измерений вместо целого числа.
Возвращает
Кортеж формы входных данных.

count_params

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

count_params()

Подсчитать общее количество скаляров, составляющих веса.

Возвращает
Целочисленное значение.
Возбуждает
ValueError если слой еще не построен (в этом случае его веса еще не определены).

from_config

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

@classmethod
from_config(
    config, custom_objects=None
)

Создать слой из его конфигурации.

Этот метод является обратным к get_config, способным создать тот же самый слой из словаря конфигурации. Он не обрабатывает связность слоев (обрабатывается Network), а также веса (обрабатываются set_weights).

Аргументы
config Словарь Python, обычно результат вызова get_config.
Возвращает
Экземпляр слоя.

get_config

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

get_config()

Возвращает конфигурацию обёртки остаточного слоя.

get_initial_state

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

get_initial_state(
    inputs=None, batch_size=None, dtype=None
)

get_weights

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

get_weights()

Возвращает текущие веса слоя в виде массивов NumPy.

Веса слоя представляют состояние слоя. Эта функция возвращает значения весов, как обучаемых, так и необучаемых, ассоциированных с этим слоем, в виде списка массивов NumPy, которые в свою очередь могут быть использованы для загрузки состояния в аналогично параметризованные слои.

Например, слой Dense возвращает список из двух значений: матрицу ядра и вектор смещения. Эти значения могут быть использованы для установки весов другого слоя Dense.

layer_a = tf.keras.layers.Dense(1,
  kernel_initializer=tf.constant_initializer(1.))
a_out = layer_a(tf.convert_to_tensor([[1., 2., 3.]]))
layer_a.get_weights()
[array([[1.],
       [1.],
       [1.]], dtype=float32), array([0.], dtype=float32)]
layer_b = tf.keras.layers.Dense(1,
  kernel_initializer=tf.constant_initializer(2.))
b_out = layer_b(tf.convert_to_tensor([[10., 20., 30.]]))
layer_b.get_weights()
[array([[2.],
       [2.],
       [2.]], dtype=float32), array([0.], dtype=float32)]
layer_b.set_weights(layer_a.get_weights())
layer_b.get_weights()
[array([[1.],
       [1.],
       [1.]], dtype=float32), array([0.], dtype=float32)]
Возвращает
Значения весов в виде списка массивов NumPy.

set_weights

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

set_weights(
    weights
)

Устанавливает веса слоя из массивов NumPy.

Веса слоя представляют состояние слоя. Эта функция устанавливает значения весов из массивов NumPy. Значения весов должны передаваться в том порядке, в котором они были созданы слоем. Обратите внимание, что веса слоя должны быть инициализированы перед вызовом этой функции, вызвав сам слой.

Например, слой Dense возвращает список из двух значений: матрицу ядра и вектор смещения. Эти значения могут быть использованы для установки весов другого слоя Dense.

layer_a = tf.keras.layers.Dense(1,
  kernel_initializer=tf.constant_initializer(1.))
a_out = layer_a(tf.convert_to_tensor([[1., 2., 3.]]))
layer_a.get_weights()
[array([[1.],
       [1.],
       [1.]], dtype=float32), array([0.], dtype=float32)]
layer_b = tf.keras.layers.Dense(1,
  kernel_initializer=tf.constant_initializer(2.))
b_out = layer_b(tf.convert_to_tensor([[10., 20., 30.]]))
layer_b.get_weights()
[array([[2.],
       [2.],
       [2.]], dtype=float32), array([0.], dtype=float32)]
layer_b.set_weights(layer_a.get_weights())
layer_b.get_weights()
[array([[1.],
       [1.],
       [1.]], dtype=float32), array([0.], dtype=float32)]
Аргументы
weights список массивов NumPy. Количество массивов и их форма должны соответствовать количеству размерностей весов слоя (т.е. должны соответствовать выводу get_weights).
Возбуждает
ValueError Если предоставленный список весов не соответствует спецификациям слоя.

zero_state

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

zero_state(
    batch_size, dtype
)

__call__

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

__call__(
    *args, **kwargs
)

Обёртка call, применяющая предварительную и последующую обработку.

Аргументы
*args Позиционные аргументы, которые будут переданы в self.call.
**kwargs Именованные аргументы, которые будут переданы в self.call.
Возвращает
Выходной(ые) тензор(ы).

Примечание:

  • Следующие необязательные именованные аргументы зарезервированы для специфических применений:
    • training: Логический скалярный тензор Python, указывающий, предназначен ли call для обучения или вывода.
    • mask: Логическая маска входных данных.
  • Если метод call слоя принимает аргумент mask (как это делают некоторые слои Keras), его значение по умолчанию будет установлено в маску, сгенерированную для inputs предыдущим слоем (если input пришёл из слоя, сгенерировавшего соответствующую маску, т.е. если он пришёл из слоя Keras с поддержкой маскирования.
  • Если слой не построен, метод вызовет build.
Возбуждает
ValueError если метод call слоя возвращает None (неверное значение).
RuntimeError если super().__init__() не был вызван в конструкторе.

© 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/nn/RNNCellResidualWrapper

Spec-Zone.ru

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