谁能告诉我如何解决这个问题:例如,我有火炬张量[1,1]。为什么当我想做这样的事情:
b = defaultdict(list)
b[torch.tensor(1)].append(2)
b[torch.tensor(1)].append(3)
我有两个新键和defaultdict的两个元素:(1:2),(1:3),但我想做(1:2,3)。我怎么能解决它?提前谢谢你
不要每次都创建新的张量
k = torch.tensor(1)
b[k].append(2)
b[k].append(3)
正如在评论中已经提到的,张量对象是通过id散列的,所以每次创建新的张量时,都会有新的id。要查看这个,
for key, val in b.items():
print(key, hash(key), id(key))
# output:
# tensor(1) 140513660621744 140513660621744
# tensor(1) 140513650260544 140513650260544
注意你的id和我的不一样。所以要么像@Barmar建议的那样定义一次,要么如果它是单项张量,就调用.item()
方法。