タグ

ブックマーク / tkng.org (2)

  • なぜcuDNNのConvolutionは高速なのか | 射撃しつつ前転

    cuDNNはNVIDIAが公開しているDeep Learning用のライブラリである。このライブラリを使うとCaffeやChainerなどのDeep Learning用のソフトウェアの速度が向上する。 この速度向上に寄与している最も大きな部分がConvolutionの高速化である。 個人的には、CPUでどこまで高速にConvolutionが実現できるのかに興味がある。記事は、その準備段階として、どういう高速化戦略がありえるのかを調べたものである。 ConvolutionとはConvolutionは、日語では畳み込みと呼ばれる操作である。畳み込み操作自体は何次元のデータ構造に対しても定義できるが、以下では、画像処理でよく使われる、二次元のConvolutionのみを考える。 何も考えずに普通にConvolutionを実装すると、以下の擬似コードのようになるだろう。ただし、簡単のため、境界

  • BinaryNetとBinarized Deep Neural Network | 射撃しつつ前転

    BinaryNet が最近話題になっている。ニューラルネットワークの二値化については前から興味があったので読んでみた。 ニューラルネットワークの二値化についてはこれまでも色々と研究があるようである。大きな方向性としては、まずはじめに実数値で重みを学習してそれを二値化するというやり方と、最初から二値の重みを学習するやり方がある。BinaryNetはそのどちらとも明確に分類しづらい、ちょっと変わった手法である。 BinaryConnectBinaryNetの前にBinaryConnectに触れておくことにする。どちらもBengioグループの研究である。BinaryConnectは大雑把に説明すると、以下の様な手法である。 weight matrix自体は実数で値を持っていて、forward/backwardの計算時に二値化する。パラメーター更新時は実数で持っている側のweight matrix

  • 1