【发布时间】:2020-01-16 01:30:05
【问题描述】:
说明
我正在设置一个torch.Tensor 用于屏蔽目的。当尝试通过索引选择条目时,使用numpy.ndarray 和torch.Tensor 保存索引数据的行为是不同的。我希望能够访问框架和解释差异的相关文档中的设计。
复制步骤
环境
官方发布的容器中的 Pytorch 1.3:pytorch/pytorch:1.3-cuda10.1-cudnn7-devel
示例
假设我需要将mask 设置为torch.Tensor 形状为[3,3,3] 的对象,并将条目(0,0,1) 和(1,2,0) 的值设置为1。下面的代码解释了不同之处。
mask = torch.zeros([3,3,3])
indices = torch.tensor([[0, 1],
[0, 2],
[1, 0]])
mask[indices.numpy()] = 1 # Works
# mask[indices] = 1 # Incorrect result
我注意到当使用mask[indices.numpy()] 时,形状为[2] 的新torch.Tensor,而mask[indices] 返回形状为[3, 2, 3, 3] 的新torch.Tensor,这表明张量切片逻辑存在差异。
【问题讨论】: