У меня есть тензор размера [150, 182, 91], первая часть - это просто размер партии, а интересующая меня матрица - 182x91.
Мне нужно запустить функцию на матрице 182x91 для каждого из 50 измерений в отдельности.
Мне нужно получить диагональную матричную полосу матрицы 182x91, и я использую следующую функцию (основываясь на моем предыдущем вопросе: Автоматическое получение диагональной матричной полосы в numpy или pytorch ):
def stripe(a):
i, j = a.size()
assert (i >= j)
out = torch.zeros((i - j + 1, j))
for diag in range(0, i - j + 1):
out[diag] = torch.diag(a, -diag)
return out
Функция stripe
ожидает матрицу размера IxJ и не может иметь дело с 3-м измерением.
Итак, когда я запускаю это:
some_matrix = x # <class 'torch.autograd.variable.Variable'> torch.Size([150, 182, 91])
get_diag = stripe(some_matrix)
Я получаю эту ошибку: ValueError: too many values to unpack (expected 2)
Если я просто попытаюсь пропустить первое измерение, выполнив x, i, j = a.size()
,
Я получаю это: RuntimeError: invalid argument 1: expected a matrix or a vector at
Я все еще на PyTorch 0.3.1. Любая помощь приветствуется!