Есть ли простой способ прокатки тензора в torch7, например numpy.roll и numpy.rollaxis в python?Простой Torch7 эквивалентен numpy.roll
Спасибо!
Есть ли простой способ прокатки тензора в torch7, например numpy.roll и numpy.rollaxis в python?Простой Torch7 эквивалентен numpy.roll
Спасибо!
Вы можете получить эффект numpy's rollaxis
с фонариком permute. В то время как rollaxis
требует, чтобы начальное и конечное положение одной оси перемещалось, permute
требует новых положений всей оси. Например. для трехмерного тензора np.rollaxis(x, 0, 3)
(перемещение 1-й оси до конца) будет эквивалентно x:permute(2, 3, 1)
.
Я не знаю о простой замене для numpy's roll
, но scatter кажется приличным кандидатом. Вызовите его с требуемым размером и новым порядком элементов после смены. (Требуется один новый порядок элементов для каждой отдельной строки.) Следующий пример перемещает каждую строку x
(содержащих 2 строк и 4 столбца со случайными значениями) 2 вправо вдоль последней оси:
th> x = torch.zeros(2, 4):uniform(0, 10)
th> y = torch.zeros(2, 4):scatter(2, torch.LongTensor{{3, 4, 1, 2}, {3, 4, 1, 2}}, x)
th> x
0.7295 3.2218 7.3979 5.5500
8.4354 3.6722 5.5463 3.4323
[torch.DoubleTensor of size 2x4]
th> y
7.3979 5.5500 0.7295 3.2218
5.5463 3.4323 8.4354 3.6722
[torch.DoubleTensor of size 2x4]
Может вы можете попробовать lutorpy, чтобы вы могли использовать массив numpy в python, а затем передать его в модуль факела и преобразовать его обратно.
Спасибо, а как насчет рулона numpy? –
Oups, я добавил редактирование для ролика. – aleju
Еще раз спасибо, что, возможно, работаю, но я работаю с очень длинными тензорами, поэтому это непрактично ... Так что, думаю, если бы вам пришлось реализовать катящиеся тензоры размера варианта в варианте shift, как бы вы это сделали? –