Spec-Zone.ru › TensorFlow 2.9

tf.nn.RNNCellDropoutWrapper

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

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

tf.nn.RNNCellDropoutWrapper(
    *args, **kwargs
)
Аргументы
cell ячейка RNN, к ней добавляется проекция на размер output_size.
input_keep_prob тензор ячейки или число от 0 до 1, вероятность сохранения входных данных; если это постоянная величина 1, то входной дропаут не будет добавлен.
output_keep_prob тензор ячейки или число от 0 до 1, вероятность сохранения выходных данных; если это постоянная величина 1, то выходной дропаут не будет добавлен.
state_keep_prob тензор ячейки или число от 0 до 1, вероятность сохранения выходных данных; если это постоянная величина 1, то выходной дропаут не будет добавлен. Дропаут состояния выполняется на исходящих состояниях ячейки. Примечание компоненты состояния, к которым применяется дропаут, когда state_keep_prob находится в (0, 1), также определяются аргументом dropout_state_filter_visitor (например, по умолчанию дропаут никогда не применяется к компоненту c объекта LSTMStateTuple).
variational_recurrent булево значение Python. Если True, то одна и та же схема дропаута применяется ко всем временным шагам при каждом вызове. Если этот параметр установлен, input_size обязательно должен быть предоставлен.
input_size (необязательно) (возможно, вложенная кортеж) объекты TensorShape, содержащие глубину(ы) входных тензоров, ожидаемых при передаче в DropoutWrapper. Требуется и используется, если variational_recurrent = True и input_keep_prob < 1.
dtype (необязательно) тип dtype входных, состояния и выходных тензоров. Требуется и используется, если variational_recurrent = True.
seed (необязательно) целое число, семя случайности.
dropout_state_filter_visitor (необязательно), по умолчанию: (см. ниже). Функция, которая принимает любой иерархический уровень состояния и возвращает скаляр или структуру с глубиной 1 Python-булевых значений, описывающих, какие члены состояния должны быть удалены. Кроме того, если функция возвращает True, дропаут применяется к этому подуровню. Если функция возвращает False, дропаут не применяется к этому подуровню. Поведение по умолчанию: выполнение дропаута для всех членов, кроме памяти (c) состояния объектов LSTMCellState, и не пытайтесь применить дропаут к объектам TensorArray: def dropout_state_filter_visitor(s): if isinstance(s, LSTMCellState): # Never perform dropout on the c state. return LSTMCellState(c=False, h=True) elif isinstance(s, TensorArray): return False return True
**kwargs словарь с ключевыми аргументами для базового слоя.
Исключения
TypeError если cell не является RNNCell, или keep_state_fn предоставлен, но не callable.
ValueError если любой из keep_probs не находится в диапазоне от 0 до 1.
Атрибуты
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 Возвращает список всех переменных/весов слоя.
wrapped_cell

Методы

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

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

get_config

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

get_config()

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

get_initial_state

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

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

get_weights

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

get_weights()

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

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

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

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 возвращает список из двух значений: матрицу ядра и вектор смещения. Эти значения могут быть использованы для установки весов другого слоя %%%CODE_BLOCK_146%%:

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/RNNCellDropoutWrapper

Spec-Zone.ru

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