Зачем слою пакетной нормализации нужен "обучающий" аргумент в тензорном потоке, но групповой нормализации не нужно - PullRequest
0 голосов
/ 17 мая 2019

Я хочу изменить нормализацию партии на групповую нормализацию в моей модели перезапуска. Затем я обнаружил, что в тензорном потоке слою нормализации партии нужен аргумент «is_training», но для нормализации группы этот аргумент не нужен. Кто-нибудь может сказать мне, почему? Пожалуйста.

Tensorflow API показывает два слоя следующим образом:

Уровень нормализации партии

tf.contrib.layers.batch_norm(
    inputs,
    decay=0.999,
    center=True,
    scale=False,
    epsilon=0.001,
    activation_fn=None,
    param_initializers=None,
    param_regularizers=None,
    updates_collections=tf.GraphKeys.UPDATE_OPS,
    is_training=True,
    reuse=None,
    variables_collections=None,
    outputs_collections=None,
    trainable=True,
    batch_weights=None,
    fused=None,
    data_format=DATA_FORMAT_NHWC,
    zero_debias_moving_mean=False,
    scope=None,
    renorm=False,
    renorm_clipping=None,
    renorm_decay=0.99,
    adjustment=None
)

Уровень нормализации группы

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
)
...