是否有将 n 维张量与 n-1 维张量相除的函数
pytorch 599
原文标题 :Is there a function to divide a n dimensional tensor with an n-1 dimensional tensor
我不确定如何正确表达这个问题,所以我将展示一些示例来描述所需的行为。
我正在寻找以这种特定方式划分张量。
- 将向量除以 1 标量,例如 [1, 2, 3, 4, 5] 除以 2 = [0.5, 1, 1.5, 2, 2.5]
- 将矩阵除以 2 个标量,例如 [[1, 2, 3], [2, 3, 4]] 除以 [2, 4] = [[0.5, 1, 1.5], [0.5, 0.75, 1]]
- 将一个 3 维张量除以一个 2 维张量,例如 [[[1, 2, 3], [2, 3, 4]], [[4,5,6], [7,8,9]], [[9,8,6], [1,2,3]]] 除以 [[1, 2], [3, 4], [5, 6]] = [[[1, 2, 3], [1, 1.5, 2]], [[4/3,5/3,2], [7/4,2,9/4]], [[9/5,8/5,6/5], [1/6,2/6,3/6]]]
- 将 N 维张量除以 N-1 维张量…
我正在寻找一种 pytorch 方法来做到这一点。
回复
我来回复-
jakub 评论
您可以扩展 N-1 维张量的维度,使其可与 N 维张量一起广播。
tensor_a / tensor_b.unsqueeze(-1)
这可以概括,即使分母是标量。 -1 维度表示最后一个维度。这遵循 python 索引规则,其中 sequence[-1] 为您提供序列的最后一个元素。
a = torch.as_tensor([1, 2, 3, 4, 5]) b = torch.as_tensor(2) a / b.unsqueeze(-1) # tensor([0.5000, 1.0000, 1.5000, 2.0000, 2.5000]) a = torch.as_tensor([[1, 2, 3], [2, 3, 4]]) b = torch.as_tensor([2, 4]) a / b.unsqueeze(-1) # tensor([[0.5000, 1.0000, 1.5000], # [0.5000, 0.7500, 1.0000]]) a = torch.as_tensor([[[1, 2, 3], [2, 3, 4]], [[4,5,6], [7,8,9]], [[9,8,6], [1,2,3]]]) b = torch.as_tensor([[1, 2], [3, 4], [5, 6]]) a / b.unsqueeze(-1) # tensor([[[1.0000, 2.0000, 3.0000], # [1.0000, 1.5000, 2.0000]], # # [[1.3333, 1.6667, 2.0000], # [1.7500, 2.0000, 2.2500]], # # [[1.8000, 1.6000, 1.2000], # [0.1667, 0.3333, 0.5000]]])
2年前