小编Won*_*hin的帖子

计算多维火炬张量中向量之间的欧氏距离

有一个随机初始化的火炬张量,其形状如下。

输入

tensor1 = torch.rand((4,2,3,100))
tensor2 = torch.rand((4,2,3,100))
Run Code Online (Sandbox Code Playgroud)

tensor1tensor2分别是具有 24 100 维向量的火炬张量。

torch.size([4,2,3])我想通过获得具有相同索引的两个张量的向量之间的欧几里德距离来获得形状为 的张量。

我曾经dist = torch.nn.functional.pairwise_distance(tensor1, tensor2)得到过我想要的结果。

但是,该pairwise_distance函数计算张量第二维的欧几里德距离。所以dist形状是torch.size([4,3,100])

我已经执行了几次转置来解决这些问题。我的代码如下。

tensor1 = tensor1.transpose(1,3)
tensor2 = tensor2.transpose(1,3)
dist = torch.nn.functional.pairwise_distance(tensor1, tensor2)
dist = dist.transpose(1,2)
Run Code Online (Sandbox Code Playgroud)

有没有更简单或更容易的方法来获得我想要的结果?

pytorch tensor

8
推荐指数
1
解决办法
2万
查看次数

在复杂列表中映射字典值的方法

输入

我有一个非常复杂的清单。

total_aug_rule_path_list = 
[[[[['#1_0_0', '#2_0_0', '#3_0_0'], ['#1_0_1', '#2_0_1', '#3_0_1']],
   [['#1_0_0', '#2_0_0', '#3_0_0'], ['#1_0_1', '#2_0_1', '#3_0_1']]],
  [[['#1_1_0', '#2_1_0', '#3_1_0', '#4_1_0'],
    ['#1_1_1', '#2_1_1', '#3_1_1', '#4_1_1']]]]]
Run Code Online (Sandbox Code Playgroud)

我有一本字典,其中列表的每个元素作为键。

sym2id_dict = {
 '#1_0_0': 1,
 '#1_0_1': 2,
 '#1_1_0': 3,
 '#1_1_1': 4,
 '#2_0_0': 5,
 '#2_0_1': 6,
 '#2_1_0': 7,
 '#2_1_1': 8,
 '#3_0_0': 9,
 '#3_0_1': 10,
 '#3_1_0': 11,
 '#3_1_1': 12,
 '#4_1_0': 13,
 '#4_1_1': 14,}
Run Code Online (Sandbox Code Playgroud)

我将把列表的每个元素映射到字典的值。

输出

[[[[[1, 5, 9], [2, 6, 10]], [[1, 5, 9], [2, 6, 10]]],
  [[[3, 7, 11, 13], [4, 8, 12, 14]]]]]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法来尽可能少地使用 for …

python lambda dictionary list nested-lists

6
推荐指数
2
解决办法
119
查看次数

标签 统计

dictionary ×1

lambda ×1

list ×1

nested-lists ×1

python ×1

pytorch ×1

tensor ×1