Spec-Zone.ru › TensorFlow

tf.nn.RNNCellDeviceWrapper

Оператор, гарантирующий, что RNNCell работает на определённом устройстве. (устаревший)

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

tf.nn.RNNCellDeviceWrapper(
    *args, **kwargs
)
Устаревший: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: Используйте tf.keras.layers.RNN вместо неё.
Аргументы
cell Экземпляр RNNCell.
device Строка устройства или функция для передачи в tf.device.
**kwargs Словарь ключевых аргументов для базового слоя.
Атрибуты
activity_regularizer Необязательная функция регуляризации для вывода этого слоя.
compute_dtype Тип данных вычислений слоя.

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

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

Spec-Zone.ru

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