11 / 24 · 概念
連接 ReLU 與最大池化
uint8 輸出零點為 100,對 [98,103;101,97] 套用 ReLU 與 2×2 最大池化。
單元可免費閱讀,註冊課程即可儲存學習進度。
納入後處理級
推論可能在卷積後繼續。ReLU 逐元素選取實數值與零的較大者。最大池化選取空間視窗中最大值。前者逐元素處理;後者改變空間尺寸,需要不同完成條件。我們的路徑先再量化、套用 ReLU,再執行無填補、步幅二的 2×2 最大池化。向下取整慣例捨棄不完整的最後一列或欄。
對原始量化輸出,實數零是輸出零點 zy。正尺度保留順序,因此 ReLU 使用 max(q,zy)。zy=128 時,若將 uint8 編碼與字面零比較,就會錯誤保留負實數值。
串接計算範例
累加器 [−2,4;6,−8] 使用乘數 0.5、零點零,變成 [−1,2;3,−4]。ReLU 產生 [0,2;3,0],池化選出三。空間降採樣與數值縮放是不同概念。此練習的最大池化挑選既有編碼,因此保留其尺度。
零點為 128 時,編碼 [126,132;134,120] 經 ReLU 變成 [128,132;134,128],再池化為編碼 134。儲存表示改變時,參考仍為實數零。平均池化會加入除法與捨入,不能與此實作互換。
ReLU 前的負值視窗 [−8,−5;−3,−6] 最大值為 −3。若錯誤在填補邊界插入零,不存在的樣本就會勝出。有填補實作必須排除該位置,或使用指定最小值。可執行池化函式不支援填補。
融合各級可能減少中間記憶體流量,但應保留可觀察數值以驗證。分別比較累加器、再量化編碼、活化值與池化輸出。依指定向下取整規則,4×4 輸入產生四個池化值;3×3 產生一個。在測試中記錄不完整視窗策略。第一手定義見 ONNX Relu 與 ONNX MaxPool。
自己試試看
uint8 輸出零點為 100,對 [98,103;101,97] 套用 ReLU 與 2×2 最大池化。
查看解說
ReLU 箝位至編碼 100,產生 [100,103;101,100]。最大池化選取 103,保留輸出尺度。