tf.nn.RNNCellDropoutWrapper
Оператор добавления дропаута к входным и выходным данным заданного ячейки. (устарело)
Наследуется от: Module
tf.nn.RNNCellDropoutWrapper(
*args, **kwargs
)
| Аргументы | |
|---|---|
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 | Тип данных весов слоя. Это эквивалентно |
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
Этот метод также может быть вызван непосредственно на модели 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. |
| Возвращает | |
|---|---|
| Выходной тензор(ы). |
| Примечание | |
|---|---|
|
| Возможные исключения | |
|---|---|
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