defaultdict(list)为火炬张量的每个元素创建一个新键



谁能告诉我如何解决这个问题:例如,我有火炬张量[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()方法。

相关内容

  • 没有找到相关文章

最新更新