python - 如何更改某些行和列中二维张量的值
问题描述
假设我有一个像这样的全零掩码张量:
mask = torch.zeros(5,3, dtype=torch.bool)
现在我想将以下和索引mask
的交点处的值设置为:rows
cols
True
rows = torch.tensor([0,2,4])
cols = torch.tensor([1,2])
我想产生以下结果:
tensor([[False, True, True ],
[False, False, False],
[False, True, True ],
[False, False, False],
[False, True, True ]])
当我尝试以下代码时,我收到一个错误:
mask[rows, cols] = True
IndexError: shape mismatch: indexing tensors could not be broadcast together with shapes [3], [2]
我怎样才能在 PyTorch 中有效地做到这一点?
解决方案
您需要适当的形状才能使用torch.unsqueeze
mask = torch.zeros(5,3, dtype=torch.bool)
mask[rows, cols.unsqueeze(1)] = True
mask
tensor([[False, True, True],
[False, False, False],
[False, True, True],
[False, False, False],
[False, True, True]])
mask[rows, cols.reshape(-1,1)] = True
mask
tensor([[False, True, True],
[False, False, False],
[False, True, True],
[False, False, False],
[False, True, True]])
推荐阅读
- javascript - 第一种文件类型预览图像显示在第二种文件类型上
- angular - ng for 不打印数据
- python - 按值查找用户排名
- python - 尽管明确将其添加到响应中,但 CORS 标头不存在
- r - 在 read_html() 中传递 user_agent() 参数
- sql-server - SSIS 数据流中的 Oracle VIEW 数据源
- java - 如何在 Java (Apache CXF) 中指定(给出实际名称)XML 字段
- python - 通过使用元组列表作为索引从 numpy 2d 数组中获取值
- urbancode - 无法访问 Kubernetes 上的 UrbanCode Deploy DB Jar 文件
- javascript - 只能使用一次输入然后它变为空