一、tensor to list

如何将

tensor([[5],
        [2],
        [6]])

转换成

[5, 2, 6]

要将tensor([[5], [2], [6]])转换为[5, 2, 6],您可以使用PyTorch中的tolist()函数将张量转换为Python列表。以下是如何执行此操作的示例代码:

import torch

tensor = torch.tensor([[5], [2], [6]])
list_result = tensor.squeeze().tolist()

print(list_result)

在上面的代码中,我们首先使用squeeze()函数将张量中的所有维度大小为1的维度移除,使其变为一维张量。然后,我们使用tolist()函数将一维张量转换为Python列表。最后,我们将结果打印出来,即得到了[5, 2, 6]。

二、余弦相似度

余弦相似度的取值范围为 [-1, 1],其中 1 表示完全相似,-1 表示完全不相似。

import torch

def cosine_similarity(a, b):
	a = a.to(torch.float)
	b = b.to(torch.float)
    dot_product = torch.dot(a, b)
    norm_a = torch.norm(a, p=2)
    norm_b = torch.norm(b, p=2)
    similarity = dot_product / (norm_a * norm_b)
    return similarity

# 示例使用
a = torch.tensor([1.1, 2.2, 3.3])
b = torch.tensor([4.4, 5.5, 6.6])
similarity = cosine_similarity(a, b)
print(similarity)

在上面的代码中,cosine_similarity函数接受两个一维张量 a 和 b 作为输入。首先,使用torch.dot()函数计算两个向量的点积。然后,使用torch.norm()函数计算向量 a 和 b 的范数(即欧几里德范数)。最后,将点积除以两个向量范数的乘积,得到余弦相似度。代码示例中的 a 和 b 分别为 [1.1, 2.2, 3.3]和 [4.4, 5.5, 6.6],计算结果将打印出来。

在上面的代码中,我们使用 .to(torch.float) 将整型张量转换为浮点型张量。然后,我们打印结果,得到的张量将具有浮点数类型:

tensor([1., 2., 3.])

进一步,计算二范数的平方

import torch

tensor = torch.tensor([1, 2, 3], dtype=torch.float)
norm_2_square = torch.norm(tensor, p=2).pow(2)

print(norm_2_square)

三、在二维张量最后一列添加常数

import torch

tensor = torch.tensor([[0.1651, 0.1680, 0.1669],
                       [0.1654, 0.1679, 0.1667],
                       [0.1671, 0.1687, 0.1642],
                       [0.1670, 0.1678, 0.1652],
                       [0.1661, 0.1675, 0.1664],
                       [0.1664, 0.1683, 0.1654],
                       [0.1665, 0.1685, 0.1650],
                       [0.1669, 0.1685, 0.1646],
                       [0.1655, 0.1677, 0.1669],
                       [0.1671, 0.1684, 0.1645]])

column_to_add = torch.full((tensor.shape[0], 1), 0.5)
tensor_with_column = torch.cat((tensor, column_to_add), dim=1)

print(tensor_with_column)

在上面的代码中,我们首先定义了要添加到原始张量的列 column_to_add,其中每个元素的值都是 0.5。然后,我们使用 torch.cat() 函数将原始张量 tensor 和新列 column_to_add 水平拼接,指定 dim=1 表示按列进行拼接。最后,我们打印结果,得到添加了新列的张量。

输出结果是:

tensor([[0.1651, 0.1680, 0.1669, 0.5000],
        [0.1654, 0.1679, 0.1667, 0.5000],
        [0.1671, 0.1687, 0.1642, 0.5000],
        [0.1670, 0.1678, 0.1652, 0.5000],
        [0.1661, 0.1675, 0.1664, 0.5000],
        [0.1664, 0.1683, 0.1654, 0.5000],
        [0.1665, 0.1685, 0.1650, 0.5000],
        [0.1669, 0.1685, 0.1646, 0.5000],
        [0.1655, 0.1677, 0.1669, 0.5000],
        [0.1671, 0.1684, 0.1645, 0.5000]])

现在,已经成功将给定的二维张量添加了一列,其中每个元素的值都为 0.5。

四、tensor取值

使用.item()方法将张量(tensor)中的单个值取出来。这个方法只适用于包含一个元素的标量张量。

import torch

# 创建一个标量张量
tensor = torch.tensor(42)

# 使用item()方法取出张量的值
value = tensor.item()

print(value)  # 打印张量的值

在这个例子中,我们创建了一个包含单个元素的标量张量tensor,然后使用item()方法将其值取出来并存储在变量value中。最后,我们打印了这个值。

42