tf.nn.experimental.general_dropout
Вычисляет дропаут: случайным образом обнуляет элементы, чтобы предотвратить переобучение.
tf.nn.experimental.general_dropout(
x, rate, uniform_sampler, noise_shape=None, name=None
)
См. tf.nn.experimental.stateless_dropout для обзора дропаута.
В отличие от tf.nn.experimental.stateless_dropout, здесь вы можете указать пользовательскую функцию выборки uniform_sampler, которая (при заданной форме и типе данных) генерирует случайный, Uniform[0, 1)-распределённый тензор (с заданной формой и типом данных). uniform_sampler может быть, например, tf.random.stateless_random_uniform или tf.random.Generator.uniform.
Например, если вы используете tf.random.Generator для генерации случайных чисел, вы можете использовать этот код для выполнения дропаута:
g = tf.random.Generator.from_seed(7) sampler = g.uniform x = tf.constant([1.1, 2.2, 3.3, 4.4, 5.5]) rate = 0.5 tf.nn.experimental.general_dropout(x, rate, sampler) <tf.Tensor: shape=(5,), ..., numpy=array([ 0. , 4.4, 6.6, 8.8, 11. ], ...)> tf.nn.experimental.general_dropout(x, rate, sampler) <tf.Tensor: shape=(5,), ..., numpy=array([2.2, 0. , 0. , 8.8, 0. ], ...)>
Это обеспечивает лучшую производительность, чем использование tf.nn.experimental.stateless_dropout и tf.random.Generator.make_seeds:
g = tf.random.Generator.from_seed(7) x = tf.constant([1.1, 2.2, 3.3, 4.4, 5.5]) rate = 0.5 tf.nn.experimental.stateless_dropout(x, rate, g.make_seeds(1)[:, 0]) <tf.Tensor: shape=(5,), ..., numpy=array([ 2.2, 4.4, 6.6, 0. , 11. ], ...)> tf.nn.experimental.stateless_dropout(x, rate, g.make_seeds(1)[:, 0]) <tf.Tensor: shape=(5,), ..., numpy=array([2.2, 0. , 6.6, 8.8, 0. ], ...>
потому что генерация и использование семян требуют дополнительных вычислений. tf.nn.experimental.general_dropout позволяет избежать их.
| Аргументы | |
|---|---|
x | Тензор с плавающей запятой. |
rate | Скалярный Tensor того же типа, что и x. Вероятность того, что каждый элемент будет опущен. Например, установка rate=0.1 приведет к опущению 10% элементов входных данных. |
uniform_sampler | Функция с подписью (shape, dtype) -> Tensor[shape, dtype], используемая для генерации тензора случайных чисел равномерного распределения в диапазоне [0, 1), с заданной формой и типом данных. |
noise_shape | Целочисленный 1-мерный Tensor, представляющий форму случайных флагов сохранения/удаления. |
name | Имя для этой операции. |
| Возвращает | |
|---|---|
Тензор той же формы и типа данных, что и x. |
| Исключения | |
|---|---|
ValueError | Если rate не находится в [0, 1) или если x не является тензором с плавающей запятой. rate=1 запрещено, так как вывод будет содержать только нули, что, скорее всего, не соответствует намерениям. |
© 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/experimental/general_dropout