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), inputs и outputs.
**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 можно задавать следующие проверки входных данных:

  • Структура (например, один вход, список из двух входов и т. д.)
  • Форма
  • Ранг (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

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

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

Spec-Zone.ru

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