import torch
x = torch.ones(3, 3)
factors = [lambda x: 2*x, lambda x: 3*x, lambda x: 4*x]
indices = torch.tensor([0, 1, 2])
def multiply_row_by_factor(row, idx):
return factors[idx](row)
result = torch.vmap(multiply_row_by_factor, in_dims=(0, 0))(x, indices)
# Original Tensor
# tensor([[1., 1., 1.],
# [1., 1., 1.],
# [1., 1., 1.]])
# Desired Result
# tensor([[2., 2., 2.],
# [3., 3., 3.],
# [4., 4., 4.]])
< /code>
Как говорится в заголовке, я ищу способ вызвать несколько функций на нескольких строках тензора. Я показываю минимально воспроизводимый пример для простоты. Я знаю, что VMAP предназначен только для одной функции. Я просто использую его здесь в качестве примера, чтобы сообщить, что я пытаюсь сделать. Этот конкретный подход не работает из -за того, что IDX является патентором. Функции здесь - лямбдас, но на самом деле мои функции состоят из сложных преобразований, которые я бы предпочел не разложить, чтобы заставить это работать. ? Что -то более чистое, чем потоки pytorch?
Подробнее здесь: https://stackoverflow.com/questions/794 ... f-a-tensor
Вызов нескольких функций на нескольких рядах тензора ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение