【发布时间】:2018-03-17 15:15:09
【问题描述】:
这似乎是一个基本问题,但我无法解决。
在我的神经网络的正向传递中,我有一个形状为 8x3x3 的输出张量,其中 8 是我的批量大小。我们可以假设每个 3x3 张量是一个非奇异矩阵。我需要找到这些矩阵的逆矩阵。 PyTorch inverse() 函数仅适用于方阵。由于我现在有 8x3x3,如何以可微分的方式将此函数应用于批次中的每个矩阵?
如果我遍历样本并将逆向附加到 python 列表,然后我将其转换为 PyTorch 张量,在反向传播期间是否会出现问题? (我问的是因为将 PyTorch 张量转换为 numpy 以执行某些操作,然后再返回张量不会在此类操作的反向传播期间计算梯度)
当我尝试做类似的事情时,我也会收到以下错误。
a = torch.arange(0,8).view(-1,2,2)
b = [m.inverse() for m in a]
c = torch.FloatTensor(b)
TypeError: 'torch.FloatTensor' 对象不支持索引
【问题讨论】: