[Pytorch] Tensor是否可以作为字典的键

先说结论: 

1.Tensor可以作为字典的键.

2.修改原张量的元素, 仍然可以通过该张量访问值.

3.无法用与字典中键元素完全相同的新张量尝试访问值. 猜测: Tensor作为字典的键时是使用内存地址进行哈希的.

测试代码:

tensor1 = torch.tensor([1.0, 2.0, 3.0])
tensor2 = torch.tensor([4.0, 5.0, 6.0])

test_dict = {}

test_dict[tensor1] = "值1"
test_dict[tensor2] = "值2"

print("字典:")
for key, value in test_dict.items():
    print(f"Key: {key}, Value: {value}")

print("\n测试1: 通过原张量访问字典值:")
print(f"张量1对应的值: {test_dict[tensor1]}")
print(f"张量2对应的值: {test_dict[tensor2]}")

print("\n测试2: 修改张量1, 并通过修改后的张量尝试访问字典值")
tensor1[0] = 10.0
print(f"修改后的张量1: {tensor1}")
print(f"修改后的张量1对应的值: {test_dict[tensor1]}")

tensor3 = torch.tensor([4.0, 5.0, 6.0])
print("\n测试3: 创建与张量2值相同的张量3, 尝试通过张量3访问字典值:")
print(f"张量2与张量3的比较: {tensor2 == tensor3}")
print(f"张量2对应的值: {test_dict.get(tensor2, '未找到Key')}")
print(f"张量3对应的值: {test_dict.get(tensor3, '未找到Key')}")

输出:

字典:
Key: tensor([1., 2., 3.]), Value: 值1
Key: tensor([4., 5., 6.]), Value: 值2

测试1: 通过原张量访问字典值:
张量1对应的值: 值1
张量2对应的值: 值2

测试2: 修改张量1, 并通过修改后的张量尝试访问字典值
修改后的张量1: tensor([10.,  2.,  3.])
修改后的张量1对应的值: 值1

测试3: 创建与张量2值相同的张量3, 尝试通过张量3访问字典值:
张量2与张量3的比较: tensor([True, True, True])
张量2对应的值: 值2
张量3对应的值: 未找到Key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值