PyTorch:行式点积
PyTorch: Row-wise Dot Product
假设我有两个张量:
a = torch.randn(10, 1000, 1, 4)
b = torch.randn(10, 1000, 6, 4)
其中第三个索引是向量的索引。
我想取 b
中每个向量与 a
中向量的点积。
为了说明,这就是我的意思:
dots = torch.Tensor(10, 1000, 6, 1)
for b in range(10):
for c in range(1000):
for v in range(6):
dots[b,c,v] = torch.dot(b[b,c,v], a[b,c,0])
如何使用 torch 函数实现此目的?
a = torch.randn(10, 1000, 1, 4)
b = torch.randn(10, 1000, 6, 4)
c = torch.sum(a * b, dim=-1)
print(c.shape)
torch.Size([10, 1000, 6])
c = c.unsqueeze(-1)
print(c.shape)
torch.Size([10, 1000, 6, 1])
假设我有两个张量:
a = torch.randn(10, 1000, 1, 4)
b = torch.randn(10, 1000, 6, 4)
其中第三个索引是向量的索引。
我想取 b
中每个向量与 a
中向量的点积。
为了说明,这就是我的意思:
dots = torch.Tensor(10, 1000, 6, 1)
for b in range(10):
for c in range(1000):
for v in range(6):
dots[b,c,v] = torch.dot(b[b,c,v], a[b,c,0])
如何使用 torch 函数实现此目的?
a = torch.randn(10, 1000, 1, 4)
b = torch.randn(10, 1000, 6, 4)
c = torch.sum(a * b, dim=-1)
print(c.shape)
torch.Size([10, 1000, 6])
c = c.unsqueeze(-1)
print(c.shape)
torch.Size([10, 1000, 6, 1])