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].
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
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.