例として以下のような5x5行列を考えます。
Python
1import torch 2x = torch.rand(25).reshape(5, 5) 3x 4 5>>> 6tensor([[0.9263, 0.6601, 0.3334, 0.6175, 0.6035], 7 [0.2583, 0.6105, 0.3113, 0.2965, 0.9429], 8 [0.0350, 0.9206, 0.8667, 0.8958, 0.7814], 9 [0.8921, 0.8116, 0.7271, 0.1324, 0.8097], 10 [0.7166, 0.7780, 0.5185, 0.4530, 0.4059]])
また各行ごとにある列のindexが与えられているとします。
drop_indices = torch.tensor([1, 4, 0, 3, 2]) drop_indices >>> tensor([1, 4, 0, 3, 2])
この時に、i行
に対してdrop_indices[i]列
の値を消したような5x4の行列を得たいです。
一行目なら一列目の0.6601、二行目なら四列目の0.9429をその行から除きたいということです。
つまり以下のような行列を結果として得たいです。
tensor([[0.9263, 0.3334, 0.6175, 0.6035], [0.2583, 0.6105, 0.3113, 0.2965], [0.9206, 0.8667, 0.8958, 0.7814], [0.8921, 0.8116, 0.7271, 0.8097], [0.7166, 0.7780, 0.4530, 0.4059]])
forで回してconcatで一応やりたいことはできるのですが、実際には1000行、5000列くらいの行列である程度高速に動いて欲しいです。(深層学習の学習処理の一部です)
どのような方向性で行けば良いでしょうか。どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。