一、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