最近、Torch7で最近傍探索を繰り返し行いたかったけど、すごく遅いのでは??という不安があったのでk-NN(k=1)でベンチマークしてみた。 設定 MNISTをk-NN(k=1)で評価する 尺度はコサイン類似度とする テストを全件評価してかかった時間を計測する 環境 Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz 32GB RAM GeForce GTX 760 パッと思いついた実装 初めは難しいことは考えず、パッと思いついた方法を試してみる。 工夫としては、 コサイン類似度を求める際にベクトルのノルムを毎回計算したくないので、最初にノルムが1になるように正規化しておく(内積=コサイン類似度になる) 各テストデータと各学習データの比較は、gemv(torch.mv)で一度に計算すれば速いのではないか require 'optim' require 'xl