11 / 24 · 概念
ReLUと最大プーリングを接続する
uint8出力のゼロ点100で、[98,103;101,97]にReLUと2×2最大プーリングを適用してください。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
後処理段を含める
推論は畳み込みの後も続くことがあります。ReLUは各実数値とゼロの大きい方を選びます。最大プーリングは空間ウィンドウ内の最大値を選びます。前者は要素単位、後者は空間サイズを変え、完了条件も異なります。この経路は再量子化、ReLU、パディングなし2×2最大プーリング、ストライド2の順です。床関数規約では不完全な最後の行や列を捨てます。
生の量子化出力で実数ゼロは出力ゼロ点zyです。正のスケールは順序を保つため、ReLUはmax(q,zy)です。zy=128なのにuint8コードを文字通りの0と比較すると、負の実数を誤って残します。
一連の計算例
アキュムレータ[−2,4;6,−8]に乗数0.5、ゼロ点0を適用すると[−1,2;3,−4]です。ReLUは[0,2;3,0]、プーリングは3です。空間の間引きと数値の再スケーリングは別の概念です。この演習の最大プーリングは既存コードを選ぶためスケールを保ちます。
ゼロ点128のコード[126,132;134,120]はReLU後に[128,132;134,128]、プーリング後に134です。記憶表現が変わっても基準は実数ゼロです。平均プーリングは除算と丸めを導入するので、この実装と置き換え可能ではありません。
ReLU前の負のウィンドウ[−8,−5;−3,−6]の最大値は−3です。パディング境界に誤ってゼロを入れると存在しないサンプルが勝ちます。パディング付き実装はその位置を除外するか、指定された最小値を使う必要があります。この実行可能なプーリング関数はパディングなしだけに対応します。
段の融合は中間メモリ通信を減らせますが、検証用の観測値を保ちます。アキュムレータ、再量子化コード、活性値、プーリング出力を別々に比較します。4×4入力は4プーリング値、3×3入力は指定の床規則で1値です。不完全ウィンドウの方針をテストに記述します。一次定義はONNX ReluとONNX MaxPoolを参照してください。
自分で考えてみましょう
uint8出力のゼロ点100で、[98,103;101,97]にReLUと2×2最大プーリングを適用してください。
解説を見る
ReLUはコード100で下限を設け、[100,103;101,100]にします。最大プーリングは103を選び、出力スケールを保持します。