· ☕ 1 min read
アインシュタインの縮約記法 テンソル積を書くと大量の が出てきてうざい なので, を省略しよう, というのが事の始まり なら ij,jk → ik プログラム的に考えれば, 単純にfor を外しただけ 例えば ドット積 z[i,j](https://scrapbox.io/yuwd/i%2Cj) += x[i,j](https://scrapbox.io/yuwd/i%2Cj) * y[i,j](https://scrapbox.io/yuwd/i%2Cj) np.einsum("ij,ij->ij", x, y) 内積 z[j,k](https://scrapbox.io/yuwd/j%2Ck) += x[j,i](https://scrapbox.io/yuwd/j%2Ci) * y[i,k](https://scrapbox.io/yuwd/i%2Ck) np.einsum("ji,ik->jk", x, y) 軸の入れ替えなどでも使える y = torch.einsum('nchw->nhwc', y).detach().cpu() 実際は遅いからやめたほうが良さそう ...