Path: blob/master/site/pt-br/addons/tutorials/layers_normalizations.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Visão geral
Este notebook fornece uma breve introdução às camadas de normalização do TensorFlow. As camadas compatíveis no momento são:
Normalização de grupo (TensorFlow Addons)
Normalização de instância (TensorFlow Addons)
Normalização de camada (TensorFlow Core)
A ideia básica por trás dessas camadas é normalizar a saída de uma camada de ativação para melhorar a convergência durante o treinamento. Em comparação com a normalização de lote, essas normalizações não funcionam em lotes. Em vez disso, elas normalizam as ativações de uma única amostra, tornando-as adequadas para redes neurais recorrentes também.
Geralmente, a normalização é realizada ao calcular a média e o desvio padrão de um subgrupo no seu tensor de entrada. Também é possível aplicar uma escala e um fator de deslocamento.
: saída
: entrada
: fator de escala
: média
: desvio padrão
: fator de deslocamento
A seguinte imagem demonstra a diferença entre essas técnicas. Cada subplot mostra um tensor de entrada, com N como o eixo do lote, C como o eixo do canal e (H, W) como os eixos espaciais (a altura e largura de uma foto, por exemplo). Os pixels em azul são normalizados pela mesma média e variância, computadas ao agregar os valores desses pixels.
Fonte: (https://arxiv.org/pdf/1803.08494.pdf)
Os pesos gamma e beta são treináveis em todas as camadas de normalização para compensar a possível perda de capacidade representacional. Você pode ativar esses fatores ao definir a sinalização center
ou scale
como True
. É claro que você pode usar initializers
, constraints
e regularizer
para beta
e gamma
, ajustando esses valores durante o processo de treinamento.
Configuração
Instale o Tensorflow 2.0 e o Tensorflow-Addons
Preparando o dataset
Tutorial de normalização de grupo
Introdução
A normalização de grupo (GN) divide os canais das suas entradas em subgrupos menores e normaliza esses valores com base na média e na variância. Como a GN funciona em um único exemplo, essa técnica não depende do tamanho do lote.
A GN teve uma pontuação experimentalmente mais próxima à normalização de lotes em tarefas de classificação de imagens. Pode ser vantajoso usar a GN em vez da normalização de lotes caso seu batch_size geral seja baixo, o que levaria ao mau desempenho da normalização de lotes
###Exemplo Divisão de 10 canais após uma camada Conv2D em 5 subgrupos em uma configuração "channels last" padrão:
Tutorial de normalização de instância
Introdução
A normalização de instância é o caso especial de normalização de grupo em que o tamanho do grupo é igual ao tamanho do canal (ou do eixo).
Os resultados experimentais mostram que a normalização de instância tem um bom desempenho na transferência de estilo ao substituir a normalização de lote. Recentemente, a normalização de instância também foi usada como substituta para a normalização de lote em GANs.
Exemplo
Aplicando InstanceNormalization após uma camada Conv2D e usando uma escala inicializada uniforme e um fator de deslocamento.
Tutorial de normalização de camada
Introdução
A normalização de camada é um caso especial de normalização de grupo em que o tamanho do grupo é 1. A média e o desvio padrão são calculados de todas as ativações de um único exemplo.
Os resultados experimentais mostram que a normalização de camada é bastante adequada para redes neurais recorrentes, já que trabalha com o tamanho do lote de maneira independente.
Exemplo
Aplicando Layernormalization após uma camada Conv2D Layer e usando uma escala e um fator de deslocamento.