python - 如何沿对角线替换 PyTorch 张量中的特定值?
问题描述
例如,有一个 PyTorch 矩阵A
:
A = tensor([[3,2,1],[1,0,2],[2,2,0]])
我需要在对角线上用 1 替换 0,所以结果应该是:
tensor([[3,2,1],[1,1,2],[2,2,1]])
解决方案
您可以使用 torch 的内置对角函数来替换对角元素,如下所示:
mask = A.diagonal() == 0
A += torch.diag(mask)
>>> A
tensor([[3, 2, 1],
[1, 1, 2],
[2, 2, 1]])
如果要将 0 替换为另一个值,请更改mask
为mask * replace_value
.
推荐阅读
- gradle - JDeveloper 和 gradle 集成
- keras - 使用 Keras 进行元素乘法
- amazon-web-services - AWS 内部负载均衡器的 SSL 证书
- sql - 将带有约束的 SQL 多对多 JOIN 转换为 DAX/PowerBI
- php - 减少 Laravel 中更新查询的时间(没有 for 循环,对于相同的键和多个值)
- unit-testing - Zend Framework 3 中的 PHPUnit 测试
- angular - 如何在 Angular-6 中重新实例化/销毁组件
- mysql - SQL 语法错误和事件无法启动
- angular - Angular 5 - 在输入更改时使用字符串替换更新我的模型
- java - 如何从文件生成 DTO java 类?