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 в 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/RNNCellDeviceWrapper

Spec-Zone.ru

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