python - PyTorch 张量的零对角线?

标签 python pytorch tensor diagonal

有没有一种简单的方法可以将 PyTorch 张量的对角线置零?

例如我有:

tensor([[2.7183, 0.4005, 2.7183, 0.5236],
        [0.4005, 2.7183, 0.4004, 1.3469],
        [2.7183, 0.4004, 2.7183, 0.5239],
        [0.5236, 1.3469, 0.5239, 2.7183]])

我想得到:

tensor([[0.0000, 0.4005, 2.7183, 0.5236],
        [0.4005, 0.0000, 0.4004, 1.3469],
        [2.7183, 0.4004, 0.0000, 0.5239],
        [0.5236, 1.3469, 0.5239, 0.0000]])

最佳答案

我相信最简单的方法是使用 torch.diagonal :

z = torch.randn(4,4)
torch.diagonal(z, 0).zero_()
print(z)
>>> tensor([[ 0.0000, -0.6211,  0.1120,  0.8362],
            [-0.1043,  0.0000,  0.1770,  0.4197],
            [ 0.7211,  0.1138,  0.0000, -0.7486], 
            [-0.5434, -0.8265, -0.2436,  0.0000]])

这样,代码就非常明确了,您将性能委托(delegate)给了 pytorch 的内置函数。

关于python - PyTorch 张量的零对角线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65712349/

相关文章:

python - 所有卷积神经网络都可以用于任意数量 channel 的图像吗?

machine-learning - TFlearn 准确率

python - Python 中对变量进行装箱的有效方法

python - 我该如何使用这种方法来获得结果?

python - 如何将 cx_Oracle 包安装到 Anaconda 3 以与 python 3.5 一起使用

pytorch - 如何在基于 ARM 的 cpu 上模拟/运行使用 ATen STFT 实现的 PyTorch 模型?

python - pytorch 变量索引丢失一维

tensorflow - 当两层使用不同的滤波器编号连接时,Conv2D 在 Tensorflow/PyTorch 中如何工作?

python - 使用 PyTorch 根据我从张量计算的数字来调整张量矩阵值?

python - 试图使 Rpy2 2.1.9 与 R 2.12.1 一起工作的奇怪问题,在 Windows xp 下使用 Python 2.6 - Rpy 找不到 R.dll?