Как нарезать тензор Факела по набору индексов?

Мне интересно, есть ли эффективный способ нарезать тензор по набору индексов? В Matlab я могу сделать следующее:

A = rand(2, 3, 6);
B = A(:,:, 1:2:end);

Тогда B - 1-й, 3-й и 5-й срезы A.

В Torch кажется, что вы можете только нарезать с непрерывным диапазоном. Это правда?

Более общий вопрос будет, если я могу получить подмножество произвольных индексов, таких как

A(:, :, [1 2 6]) 

в Matlab.

Заранее спасибо!

1 ответ

Используйте оператор индекса, например:

t = torch.rand(2, 3, 6)
-- (1,.,.) = 
--   0.1790  0.7774  0.5343  0.0628  0.3077  0.7203
--   0.0677  0.5847  0.2401  0.6885  0.8724  0.4413
--   0.1849  0.2704  0.2745  0.5508  0.4634  0.6340
-- 
-- (2,.,.) = 
--   0.2523  0.6135  0.6037  0.0194  0.6456  0.0229
--   0.9966  0.8688  0.2078  0.7169  0.1528  0.5708
--   0.8671  0.7731  0.4596  0.0636  0.8873  0.2205
-- [torch.DoubleTensor of size 2x3x6]


t:index(3, torch.LongTensor{1, 3, 5})
-- (1,.,.) = 
--   0.1790  0.5343  0.3077
--   0.0677  0.2401  0.8724
--   0.1849  0.2745  0.4634
-- 
-- (2,.,.) = 
--   0.2523  0.6037  0.6456
--   0.9966  0.2078  0.1528
--   0.8671  0.4596  0.8873
-- [torch.DoubleTensor of size 2x3x3]

Вы можете сделать так же t:index(3, torch.LongTensor{1, 2, 6}),

Другие вопросы по тегам