2017-11-19 14 views
1

a[2, :, 0, :]しかしPyTorchで2次元以上のインデックスを選択する方法は?

0.5580 -0.0337 1.0048 -0.5044 0.6784 -1.6117 1.0084 1.1886 0.1278 0.3739 [torch.FloatTensor of size 2x5]

与えている間、私は((2, :, 0, :), (1, :, 1, :), (2, :, 2, :), (0, :, 3, :)のようなサイズ(2, 4, 5)または(4, 2, 5)

の結果テンソルをサブテンソルを選択することができますどのように、a = torch.randn(3, 2, 4, 5)を考えると、a[[2, 1, 2, 0], :, [0, 1, 2, 3], :]

TypeError: Performing basic indexing on a tensor and encountered an error indexing dim 0 with an object of type list. The only supported types are integers, slices, numpy scalars, or if indexing with a torch.LongTensor or torch.ByteTensor only a single Tensor may be passed.

いますnumpy(4, 2, 5)を返しますが、成功する。

答えて

0

あなたのために機能しますか?

import torch 

a = torch.randn(3, 2, 4, 5) 
print(a.size()) 

b = [a[2, :, 0, :], a[1, :, 1, :], a[2, :, 2, :], a[0, :, 3, :]] 
b = torch.stack(b, 0) 

print(b.size()) # torch.Size([4, 2, 5]) 
+0

私はこれについてあまり考えていませんでした。このアプローチはきちんとしています。 4D配列のトーチ表記は、そのnumpyとは異なる方法です。 +1。 https://github.com/pytorch/pytorch/issues/2412には多くの問題があります。 – Dark

+0

それは一般的に 'b'を構築するために' for'リストの理解を使わなければならないということですか? – Edityouprofile

+0

@表示名は必須ではありません。あなたはあなたの全体的な問題について言及していませんでした。あなたはただ特定の問題を言及しました。リストを検討することは問題を解決する一つの方法です。 –

関連する問題