微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为torch.tensor分配列表?

如何解决如何为torch.tensor分配列表?

假设我有一个列表[(0,0),(1,1)]和另一个列表[4,5,6],并且矩阵X的大小为(3,2)。我正在尝试将列表分配给像X[0,0] = 4X[1,0] = 5X[1,1] = 6这样的矩阵。但似乎我在为张量分配列表时遇到问题

x = torch.zeros(3,2)
indices = [(0,1)]
value = [4,6]
x[indices] = values

错误

TypeError                                 Traceback (most recent call last)
<ipython-input-7-dec4e6a479a5> in <module>
     
   4 indices = [(0,1)]
 
   5 values = [4,6]

----> 6 x[indices] = values

TypeError: can't assign a list to a torch.FloatTensor

解决方法

通常,“如何将列表更改为张量”的答案是使用torch.Tensor(list)。但这并不能解决您的实际问题。

一种方法是关联索引和值,然后对其进行迭代:

for (i,v) in zip(indices,values) :
   x[i] = v
,

如果您可以使张量indices比使张量更容易

indices = torch.tensor([(0,0),(1,1)])

x[indices[:,0],indices[:,1]] = torch.tensor(values).float()
x
tensor([[4.,0.],[5.,6.],[0.,0.]])

由于我们的x是浮点类型,因此需要将值转换为相同的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。