tf.contrib.layers.group_norm
Функциональный интерфейс для слоя групповой нормализации.
tf.contrib.layers.group_norm(
inputs, groups=32, channels_axis=-1, reduction_axes=(-3, -2), center=True,
scale=True, epsilon=1e-06, activation_fn=None, param_initializers=None,
reuse=None, variables_collections=None, outputs_collections=None,
trainable=True, scope=None, mean_close_to_zero=False
)
Ссылка: https://arxiv.org/abs/1803.08494
"Групповая нормализация", Юксин Ву, Кайминг Хе
| Аргументы | |
|---|---|
inputs | Тензор с по крайней мере 2 измерениями, одним из которых являются каналы. Все размерности формы, кроме размера пакета, должны быть полностью определены. |
groups | Целое число. Разделите каналы на это количество групп, по которым будут вычисляться статистические данные о нормализации. Это число должно соответствовать количеству каналов в inputs. |
channels_axis | Целое число. Указывает индекс оси каналов, которая будет разбита на groups, для каждой из которых будут вычисляться статистические данные. Должно быть взаимно исключающим с reduction_axes. Рекомендуется использовать отрицательные целые числа, чтобы быть независимыми от того, включена ли размерность пакета. |
reduction_axes | Кортеж целых чисел. Указывает размерности, по которым будут накапливаться статистические данные. Должно быть взаимно исключающим с channels_axis. Статистические данные не будут накапливаться по осям, не указанным в reduction_axes или channel_axis. Рекомендуется использовать отрицательные целые числа, чтобы быть независимыми от того, включена ли размерность пакета. Примеры использования: формат NHWC: channels_axis=-1, reduction_axes=[-3, -2] формат NCHW: channels_axis=-3, reduction_axes=[-2, -1] |
center | Если True, добавляет смещение beta к нормализованному тензору. Если False, beta игнорируется. |
scale | Если True, умножает на gamma. Если False, gamma не используется. Когда следующий слой является линейным (например, nn.relu), это можно отключить, так как масштабирование можно выполнить в следующем слое. |
epsilon | Маленькое число с плавающей точкой, добавляемое к дисперсии, чтобы избежать деления на ноль. |
activation_fn | Функция активации, по умолчанию установлена в None, чтобы пропустить её и сохранить линейную активацию. |
param_initializers | Необязательные инициализаторы для beta, gamma, скользящего среднего и скользящей дисперсии. |
reuse | Следует ли повторно использовать слой и его переменные. Для возможности повторного использования необходимо указать область действия слоя. |
variables_collections | Необязательные коллекции для переменных. |
outputs_collections | Коллекции для добавления выходных данных. |
trainable | Если True, также добавляет переменные в коллекцию графа GraphKeys.TRAINABLE_VARIABLES (см. tf.Variable). |
scope | Необязательная область действия для variable_scope. |
mean_close_to_zero | Среднее значение input перед ReLU будет близко к нулю, когда размер пакета ≥ 4k для Resnet-50 на TPU. Если True, используйте nn.sufficient_statistics и nn.normalize_moments для вычисления дисперсии. Это тот же поведение, что и fused равно True в нормализации по пакету. Если False, используйте nn.moments для вычисления дисперсии. Когда mean близко к нулю, например, 1e-4, использование mean для вычисления дисперсии может привести к плохим результатам из-за повторяющихся ошибок округления и денормализации в mean. Когда mean велико, например, 1e2, сумма(input^2) настолько велика, что накапливаются только значащие цифры элементов. Поэтому использование суммы (input - mean)^2/n для вычисления дисперсии имеет лучшую точность по сравнению с (сумма(input^2)/n - mean^2), когда mean велико. |
| Возвращаемое значение | |
|---|---|
A Tensor представляющий результат операции. |
| Исключения | |
|---|---|
ValueError | Если ранг inputs не определён. |
ValueError | Если ранг или размерность каналов inputs не определены. |
ValueError | Если число групп не соответствует количеству каналов. |
ValueError | Если reduction_axes или channels_axis выходят за пределы. |
ValueError | Если reduction_axes не взаимно исключают channels_axis. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/layers/group_norm