Altifigence Academy

11 / 24 · Conceito

Conexão de ReLU e max pooling

Com ponto zero de saída uint8 igual a 100, aplique ReLU e max pooling 2×2 a [98,103;101,97].

Inclua os estágios de pós-processamento

A inferência pode continuar além da convolução. ReLU seleciona o maior entre cada valor real e zero. Max pooling seleciona o maior valor de uma janela espacial. Um opera elemento a elemento; o outro muda o tamanho espacial e precisa de outra condição de conclusão. Nosso caminho requantiza, aplica ReLU e depois executa max pooling 2×2 sem preenchimento e com passo dois. A convenção de piso descarta uma linha ou coluna final incompleta.

Para saída quantizada bruta, o zero real é o ponto zero de saída zy. Uma escala positiva preserva a ordenação, portanto ReLU usa max(q,zy). Comparar códigos uint8 com zero literal quando zy=128 preservaria incorretamente valores reais negativos.

Cadeia resolvida

Os acumuladores [−2,4;6,−8] com multiplicador 0.5 e ponto zero igual a zero tornam-se [−1,2;3,−4]. ReLU produz [0,2;3,0] e o pooling seleciona três. Redução da resolução espacial e reescalonamento numérico são conceitos separados. Max pooling escolhe um código existente e, portanto, preserva sua escala neste exercício.

Com ponto zero 128, os códigos [126,132;134,120] tornam-se [128,132;134,128] após ReLU e produzem o código 134 no pooling. A referência continua sendo o zero real mesmo quando a representação de armazenamento muda. Average pooling introduziria divisão e arredondamento, portanto não é intercambiável com esta implementação.

Uma janela negativa antes de ReLU, [−8,−5;−3,−6], tem máximo −3. Inserir incorretamente zero em uma borda de preenchimento permite que uma amostra inexistente vença. Uma implementação com preenchimento deve excluir essa posição ou usar o valor mínimo especificado. Nossa função executável de pooling não suporta preenchimento.

Fundir estágios pode reduzir o tráfego de memória intermediária, mas preserve valores observáveis para a verificação. Compare separadamente acumuladores, códigos requantizados, valores ativados e saída do pooling. Uma entrada 4×4 produz quatro valores de pooling; uma entrada 3×3 produz um sob a regra de piso declarada. Documente a política para janelas incompletas nos testes. Veja as definições primárias em Relu do ONNX e MaxPool do ONNX.

Experimente

Com ponto zero de saída uint8 igual a 100, aplique ReLU e max pooling 2×2 a [98,103;101,97].

Ler a explicação

ReLU limita pelo código 100, produzindo [100,103;101,100]. Max pooling seleciona 103 e preserva a escala de saída.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.