Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Pooling (input,
poolKind, # "max" or "average"
{kernel dimensions},
stride = {stride dimensions},
autoPadding = {padding flags (boolean)},
lowerPad = {lower padding (int)},
upperPad = {upper padding (int)})
As operações de agrupamento calculam uma nova matriz selecionando o valor máximo (máximo de pooling) ou o valor médio na entrada de pooling. No caso de agrupamento médio, a contagem média não inclui valores acolchoados.
O agrupamento n-dimensional permite criar uma piscina máxima ou média de quaisquer dimensões, passos ou estofos. A sintaxe é:
em que:
input- entrada de agrupamentopoolKind- "max" ou "médio"{kernel dimensions}- dimensões da janela de agrupamento, como vetor BrainScript, por exemplo.(4:4)stride- [nomeado, opcional, o incumprimento é 1] passos.autoPadding- [nomeado, opcional, o padrão é verdadeiro] bandeiras de enchimento automática para cada dimensão de entrada.lowerPad- [nomeado, opcional, o padrão é 0] estofamento inferior preciso para cada dimensão de entradaupperPad- [nomeado, opcional, o predefinimento é 0] estofamento superior preciso para cada dimensão de entrada
Todas as dimensões são separadas pelo cólon. Nota: Se utilizar o precintado NDLNetworkBuilder, estes devem ser separados em vírgula e fechados { } em vez disso.
Uma vez que a janela de agrupamento pode ter dimensões arbitrárias, isto permite construir várias configurações de pooling, por exemplo, uma camada "Maxout" (ver Goodfellow et al para mais detalhes):
MaxOutPool (inp, kW, kH, kC, hStride, vStride) =
Pooling (inp, "max", (kW:kH:kC), stride=(hStride:vStride:kC), true:true:false))
Sintaxe simplificada para agrupamento 2D
Existe uma sintaxe simplificada para o agrupamento 2D:
MaxPooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
AveragePooling(m, windowWidth, windowHeight, stepW, stepH, imageLayout="cudnn" /* or "HWC"*/ )
com os seguintes parâmetros:
m- a matriz de entrada.windowWidth- largura da janela de piscinawindowHeight- altura da janela de piscinastepW- passo (ou passo) utilizado na direção da largurastepH- passo (ou passo) utilizado na direção da alturaimageLayout- [nomeado opcional] o formato de armazenamento de cada imagem. Esta é uma opção antiga que provavelmente não vai precisar. Por padrão é , oHWCque significa que cada imagem é armazenada como[channel, width, height]na notação principal da coluna. Para um melhor desempenho, recomenda-se a utilização de cuDNN, caso em que deve defini-lo paracudnn, o que significa que cada imagem é armazenada como [largura, altura, canal] na notação principal da coluna. Note que ocudnnformato funciona tanto na GPU como na CPU.
Exemplo (ConvReLULayer NDL macro):
# pool2
pool2W = 2
pool2H = 2
pool2hStride = 2
pool2vStride = 2
pool2 = MaxPooling (conv2, pool2W, pool2H, pool2hStride, pool2vStride, imageLayout="$imageLayout$")
Nota: Se estiver a utilizar o deprecisado NDLNetworkBuilder, o parâmetro opcional imageLayout é o mais predefinido "HWC" .