tf.nn.RNNCellDropoutWrapper
Оператор, добавляющий dropout к входам и выходам заданной ячейки. (устарел)
Наследует от: Module
tf.nn.RNNCellDropoutWrapper(
*args, **kwargs
)
| Аргументы | |
|---|---|
cell | RNNCell; к ней добавляется проекция на output_size. |
input_keep_prob | Скалярный тензор или число с плавающей точкой от 0 до 1, вероятность сохранения входа; если это константа, равная 1, dropout входа не добавляется. |
output_keep_prob | Скалярный тензор или число с плавающей точкой от 0 до 1, вероятность сохранения выхода; если это константа, равная 1, dropout выхода не добавляется. |
state_keep_prob | Скалярный тензор или число с плавающей точкой от 0 до 1, вероятность сохранения выхода; если это константа, равная 1, dropout выхода не добавляется. Dropout состояния применяется к выходящим состояниям ячейки. Примечание: компоненты состояния, к которым применяется dropout, когда state_keep_prob находится в (0, 1), также определяются аргументом dropout_state_filter_visitor (например, по умолчанию dropout никогда не применяется к компоненту c объекта LSTMStateTuple). |
variational_recurrent | Логическое значение Python. Если True, то один и тот же шаблон dropout применяется на всех временных шагах одного вызова run. Если задан этот параметр, необходимо также предоставить 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, dropout применяется на этом подуровне. Если функция возвращает False, dropout не применяется на всём этом подуровне. Поведение по умолчанию: применять dropout ко всем элементам, кроме состояния памяти (c) объектов LSTMCellState, и не пытаться применять dropout к объектам 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_prob не находится в диапазоне от 0 до 1. |
| Атрибуты | |
|---|---|
activity_regularizer | Необязательная функция регуляризации для выходных данных этого слоя. |
compute_dtype | Тип данных вычислений слоя. Это эквивалентно Слои автоматически приводят свои входные данные к типу данных вычислений, поэтому вычисления и выходные данные также имеют этот тип. Это делает базовый класс Layer в Для обеспечения численной стабильности слои часто выполняют некоторые внутренние вычисления с более высокой точностью, когда |
dtype | Тип данных весов слоя. Это эквивалентно |
dtype_policy | Политика типов данных, связанная с этим слоем. Это экземпляр |
dynamic | Является ли слой динамическим (только eager-режим); задаётся в конструкторе. |
input | Возвращает входной тензор (тензоры) слоя. Применимо, только если у слоя ровно один вход, то есть он подключён к одному входящему слою. |
input_spec | Экземпляр (экземпляры) InputSpec, описывающий формат входных данных для этого слоя. При создании подкласса слоя можно задать self.input_spec = tf.keras.layers.InputSpec(ndim=4) Теперь при попытке вызвать слой с входными данными не ранга 4 (например, с входными данными формы ValueError: Input 0 of layer conv2d is incompatible with the layer: expected ndim=4, found ndim=1. Full shape received: [2] Проверки входных данных, которые можно задать с помощью
Подробнее см. в разделе |
losses | Список потерь, добавленных с помощью API add_loss(). Тензоры регуляризации переменных создаются при обращении к этому свойству, поэтому оно безопасно для eager-режима: обращение к 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 | Список всех нетренируемых весов, отслеживаемых этим слоем. Нетренируемые веса не обновляются во время обучения. Предполагается, что они будут обновляться вручную в |
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
Этот метод также можно вызывать непосредственно для функциональной модели во время её создания. В этом случае любой тензор, переданный этой модели, должен быть символическим, и его должно быть возможно связать с 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()
Возвращает конфигурацию оболочки dropout.
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. |
| Возвращает | |
|---|---|
| Выходной тензор (тензоры). |
| Примечание | |
|---|---|
|
| Исключения | |
|---|---|
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