Spec-Zone.ru › TensorFlow

tf.nn.RNNCellResidualWrapper

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

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

tf.nn.RNNCellResidualWrapper(
    *args, **kwargs
)
Устарело: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: Используйте tf.keras.layers.RNN.
Аргументы
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

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

Этот метод также можно вызвать непосредственно на функциональной модели во время построения. В этом случае любой тензор, передаваемый в эту модель, должен быть символическим и иметь возможность отслеживания до входов модели. Эти метрики становятся частью топологии модели и отслеживаются при сохранении модели с помощью 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() с результатом объекта метрики на функциональной модели, как показано в примере ниже, не поддерживается. Это связано с тем, что мы не можем отследить тензор результата метрики до входов модели.
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 boolean, указывающий, предназначен ли 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/api_docs/python/tf/nn/RNNCellResidualWrapper

Spec-Zone.ru

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