AIハードウェアとソフトウェアスタック
畳み込みニューラルネットワークで、畳み込みの計算をim2colなどの方法で行列の積に変換して計算することがある理由として正しいものはどれか。
- A変換すると演算の回数が10分の1になるから
- B高度に最適化された行列の積のライブラリや、テンソルコアなどの行列の演算器を使えるから
- C変換するとメモリの使用量が必ず減るから
答えと解説を見る
正解:B. 高度に最適化された行列の積のライブラリや、テンソルコアなどの行列の演算器を使えるから
im2colは、畳み込みの各窓に入る入力の値を1列に並べた大きな行列を作り、フィルタを並べた行列との積で畳み込みを計算する方法です。窓が重なる分だけ入力が重複してメモリは増えますが、何十年も最適化されてきた行列の積のライブラリや、テンソルコアのような行列の演算器をそのまま使えるので、全体として速くなることが多いです。重複を作らずに同じことをする実装もあります。
- A. 演算の回数は変わりません。
- B. 正しい。ただし入力を並べ替える分、メモリは増えます。
- C. im2colでは入力を重複して並べるので、メモリはむしろ増えます。