Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
BatchNormalization(input, scale, bias, runMean, runVariance, spatial,
normalizationTimeConstant = 0,
blendTimeConstant = 0, epsilon = 0.00001, useCntkEngine = true)
Parâmetros
inputé a entrada do nó de normalização do lotescaleé um ParâmetroTensor{} que detém os fatores de escalação componentes aprendidas (gammatermo na equação abaixo).biasé um ParâmetroTensor{} que detém o viés aprendido (betatermo).scaleebiasdevem ter as mesmas dimensões que devem ser iguais àsinputdimensões em caso despatial = falseou número de mapas de características de produção convolution em caso despatial = true.runMeané a média de funcionamento que é utilizada durante a fase de avaliação e pode ser utilizada durante o treino também. Deve passar um ParâmetroTensor{} com as mesmas dimensões quescaleebias, valor inicial 0, elearningRateMultiplier=0definido.runVarianceé a variação de execução. É representado da mesma forma querunMean. .spatialé uma bandeira que especifica se deve calcular a média/var para cada recurso numa minibatch de forma independente ou, no caso de camadas convolucionais, por mapa de características.normalizationTimeConstant(predefinição 0): constante de tempo para calcular a média de execução da média e da variação como uma versão filtrada de baixo passe das estatísticas do lote. Nota: O padrão não é normalmente o que se deseja.blendTimeConstant(predefinição 0): permite suavizar as estimativas dos lotes com as estatísticas de funcionamentoepsiloné uma constante de condicionador adicionada à variação ao calcular o desvio padrão inverso.useCntkEngine(padrão: verdadeiro): definir isto parafalseselecionar a implementação cuDNN apenas da GPU
Valor devolvido
O lote normalizado input.
Description
BatchNormalization implementa a técnica descrita na normalização do lote de papel: Acelerando a Formação em Rede Profunda reduzindo a mudança de covaria interna (Sergey Ioffe, Christian Szegedy).
Em suma, normaliza as saídas de camadas para cada minibatch para cada saída (característica) de forma independente e aplica uma transformação afina para preservar a representação da camada. Isto é, para a camada input:
m = mean (input)
var = variance (input)
inputNorm = (input - mean)/sqrt (epsilon + var)
output = gamma * inputNorm + beta
onde gamma e beta são parâmetros treináveis.
mean e variance são estimados a partir de dados de treino. No caso mais simples, são a média e a variação da atual minibatch durante o treino. Em inferência, uma estimativa a longo prazo é usada em vez disso.
As estimativas a longo prazo são uma versão filtrada de baixo passe das estatísticas de minibatch, com o tempo constante (em amostras) dado pelo normalizationTimeConstant parâmetro.
Um valor de 0 meios não haverá suavidade exponencial e a média/variação de funcionamento será sempre igual à da última minibatch vista.
Isto é muitas vezes indesejável.
Em vez disso, recomenda-se usar um valor de alguns milhares aqui.
O BatchNormalizationLayer{} invólucro tem um padrão de 5000.
Para mais informações sobre as constantes de tempo e suavizamento exponencial: https://en.wikipedia.org/wiki/Exponential_smoothing#Time_Constant
Como as estatísticas de minibatch podem ser ruidosas, CNTK também permite usar uma estimativa MAP (maximum-a-posteriori) durante o treino, onde a estimativa de longo prazo em execução é tomada como anterior.
O peso do anterior é controlado pelo blendTimeConstant parâmetro.
No entanto, até ao momento, isso não foi considerado útil nas nossas experiências.
Note que durante a inferência, CNTK definirá automaticamente ambas as constantes de tempo de modo a utilizar apenas a média de funcionamento existente e que não é atualizada. Não é necessária nenhuma ação explícita por parte do utilizador.
implementação cuDNN
Por predefinição, esta função utiliza uma implementação CNTK que funciona com GPUs e CPUs. Pode optar por utilizar a implementação do cuDNN, que é mais performante. Note-se, no entanto, que a implementação do cuDNN não suporta todas as opções, e a formação requer uma GPU (CNTK fornece, no entanto, uma emulação cpU para inferência, mesmo que selecione a implementação do cuDNN).