重みのみの量子化と動的量子化の違いについて

知りたいこと

CNNをint8量子化する際の、畳み込み層でのふるまいの違いを考えています。以下、私なりの解釈です。

重みのみの量子化
⇒前処理として活性化データがint8にキャストされる。畳み込み演算を行い、演算後の出力はfp32に再変換されて次の層の入力となる。
動的量子化
⇒まず、活性化データがint8に量子化される。次に畳み込み演算が実行され、int32の結果を得る。出力はint8にキャストされ、次の層の入力となる。

つまり、活性化データはどちらも畳み込み演算時にはint8のデータ型となります。なぜ精度の違いが出るのでしょうか。(重みのみの量子化の方が、活性化データをfp32で保持するため高精度といわれています。量子化よりキャストによる型変換の方が精度が高いということでしょうか。その場合、なぜそうなるのか理由が知りたいです。)

コメントを投稿

0 コメント