numpy.einsumはそこそこ速い

np.einsumは配列の次元が大きくなるとnp.dotとかnp.tensordotよりかなり遅くなるような気がしていた。

しかし、公式ドキュメントによるとoptimizeフラグをgreedyかoptimalにすればかなり速くなるようだ。

numpy.org

実際に以下のnotebookで試すと、optimizeをつけるだけでかなり速くなる(使用メモリが増えているので計算途中の配列を保存している?)。

gist.github.com