Spec-Zone.ru › TensorFlow

tf.nn.RNNCellDropoutWrapper

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

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

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

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