Binarized Neural Networksでどこを2値化して,どこは実数のまま計算しているかまとめた.

重みW:推論で入力と積をとるところは2値,学習のときは実数(ただし-1 to 1にクリッピング)
積和s:推論のときは整数.学習のときも整数.
活性a:推論のときは実数で積和sを計算するときだけ2値,学習のときは実数値も2値も使う

重み勾配gW:学習のときは実数.添え字bが付いているけど2値じゃない
積和勾配gs:学習のときは実数.
活性勾配ga:学習のときは実数.活性aの絶対値が1以上のときは0.

2値の部分が驚くほど少ない.また実数で計算したものを2値化しても計算上のメリットがない.Binarizedと言っている割に性能が出ていないのはうなずける.2値化したなら,消費電力は3桁削減できないとおかしいのにそうなってない.