Spec-Zone.ru › TensorFlow

tf.nn.RNNCellDropoutWrapper

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

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

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

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

Spec-Zone.ru

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