Точность умножения матрицы pytorch зависит от размера тензораPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Точность умножения матрицы pytorch зависит от размера тензора

Сообщение Anonymous »

У меня есть следующий код, в котором я умножаю тензор X на матрицу C. В зависимости от размера X и от того, подключен ли C к графу вычислений, я получаю разные результаты при сравнении пакетного умножения с циклическим циклом по каждому фрагменту X.import torch
from torch import nn

for X,C in [(torch.rand(8, 50, 32), nn.Parameter(torch.randn(32,32))),
(torch.rand(16, 50, 32), nn.Parameter(torch.randn(32,32))),
(torch.rand(8, 50, 32), nn.Parameter(torch.randn(32,32)).detach())
]:

#multiply each entry
A = torch.empty_like(X)
for t in range(X.shape[1]):
A[:,t,:] = (C @ X[:,t,:].unsqueeze(-1)).squeeze(-1)

#multiply in batch
A1 = (C @ X.unsqueeze(-1)).squeeze(-1)

print('equal:', (A1 == A).all().item(), ', close:', torch.allclose(A1, A))

Возвраты
equal: False , close: False
equal: True , close: True
equal: True , close: True

Что происходит? Я ожидаю, что они будут одинаковыми во всех трех случаях.
Для справки:
import sys, platform
print('OS:', platform.platform())
print('Python:', sys.version)
print('Pytorch:', torch.__version__)

дает:
OS: macOS-14.4.1-arm64-arm-64bit
Python: 3.12.1 | packaged by conda-forge | (main, Dec 23 2023, 08:01:35) [Clang 16.0.6 ]
Pytorch: 2.2.0


Подробнее здесь: https://stackoverflow.com/questions/785 ... ensor-size
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»