Применить функцию к каждой строке в Torch

Я знаю, что у тензоров есть метод apply, но он применяет функцию только к каждому элементу. Есть ли элегантный способ выполнять операции по строкам? Например, могу ли я умножить каждую строку на другое значение?

Сказать

A =
  1 2 3
  4 5 6
  7 8 9

а также

B =
  1
  2
  3

и я хочу умножить каждый элемент в ith строке A на ith элемент B, чтобы получить

1 2 3
8 10 12
21 24 27

как бы я это сделал?


person Veech    schedule 21.12.2015    source источник
comment
Вы должны взглянуть на этот вопрос: stackoverflow.com/ вопросы/34123291/   -  person Alexander Lutsenko    schedule 22.12.2015


Ответы (2)


См. эту ссылку: Torch - применить функцию к измерению

(Спасибо Александру Луценко за его предоставление. Я просто переместил его в ответ.)

person Veech    schedule 23.12.2015

Одна из возможностей — развернуть B как следить:

 1  1  1
 2  2  2
 3  3  3
[torch.DoubleTensor of size 3x3]

Затем вы можете использовать поэлементное умножение напрямую:

local A = torch.Tensor{{1,2,3},{4,5,6},{7,8,9}}
local B = torch.Tensor{1,2,3}
local C = A:cmul(B:view(3,1):expand(3,3))
person deltheil    schedule 22.12.2015
comment
Спасибо! Да, для моего примера есть несколько разных способов, но мне было интересно, есть ли общий способ применить функцию к каждой строке. Я думаю, что комментарий Александра отвечает на мой первый вопрос. - person Veech; 22.12.2015