В моей структуре у меня есть внешняя петля (здесь измеряемое переменной n ), и внутри корпуса цикла я должен выполнять матричные инверсии/умножения для нескольких размеров партии. Я наблюдал, что вручную зацикливаться на партийных размерах и вычисление обратного, измеримо быстрее, чем передача всех партий в Torch.linalg.inv < /code> Функция.
аналогичные операторы могут быть сделаны для умножения вычислительной матрицы с использованием Torch.einsum. function.
Мое ожидание было то, что передача всех партий одновременно работает лучше, чем для петли. Есть идеи/объяснения/рекомендации здесь?
Профилирование вывода функции upverse_batch :
ncalls tottime percall cumtime percall filename:lineno(function)
100 2.112 0.021 2.112 0.021 {built-in method torch._C._linalg.linalg_inv}
1 0.000 0.000 2.112 2.112 mwe.py:5(inverse_batch)
1 0.000 0.000 2.112 2.112 {built-in method builtins.exec}
1 0.000 0.000 2.112 2.112 :1()
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
Профилирование вывода функции Inverse_loop :
ncalls tottime percall cumtime percall filename:lineno(function)
8000 0.207 0.000 0.207 0.000 {built-in method torch._C._linalg.linalg_inv}
1 0.022 0.022 0.229 0.229 mwe.py:9(inverse_loop)
1 0.000 0.000 0.000 0.000 {method 'view' of 'torch._C.TensorBase' objects}
1 0.000 0.000 0.229 0.229 {built-in method builtins.exec}
1 0.000 0.000 0.229 0.229 :1()
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
< /code>
code: < /p>
import torch
import cProfile
import pstats
def inverse_batch(tensors, n):
for i in range(n):
torch.linalg.inv(tensors)
def inverse_loop(tensors, n):
tensors = tensors.view(-1, 3, 3)
for i in range(n):
for i in range(10 * 8):
torch.linalg.inv(tensors)
# Create a batch of tensors
tensors = torch.randn(10, 8, 3, 3, dtype = torch.double) # Shape: (10, 8, 3, 3)
# Profile code
n = 100 # Dummy outer loop variable
cProfile.run('inverse_batch(tensors, n)', 'profile_output')
stats = pstats.Stats('profile_output')
stats.strip_dirs().sort_stats('tottime').print_stats()
Подробнее здесь: https://stackoverflow.com/questions/794 ... ns-in-pyto
Эффективная инверсия/умножение матрицы с несколькими размерами партии в Pytorch ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Эффективная инверсия/умножение матрицы с несколькими размерами партии в Pytorch
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Эффективная инверсия/умножение матрицы с несколькими размерами партии в Pytorch
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Эффективная инверсия/умножение матрицы с несколькими размерами партии в Pytorch
Anonymous » » в форуме Python - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-