Python 如何计算4D张量中每个矩阵的Eingenv值?

Python 如何计算4D张量中每个矩阵的Eingenv值?,python,pytorch,eigenvalue,tensor,Python,Pytorch,Eigenvalue,Tensor,我有一个尺寸为[batch_size,channels,height,width]([16,64,24,24])的4D张量,但我需要计算每个24x24矩阵的本征值,以获得尺寸为[batch_size,channels]([16,64])的2D张量,其中每个元素表示对应矩阵的本征值。没有函数可以直接这样做。但是,您可以循环输入张量来构造所需的本征张量,然后对其进行重塑 # Supposing your tensor is a out = [] for bs in range(a.size(0)):

我有一个尺寸为[batch_size,channels,height,width]([16,64,24,24])的4D张量,但我需要计算每个24x24矩阵的本征值,以获得尺寸为[batch_size,channels]([16,64])的2D张量,其中每个元素表示对应矩阵的本征值。

没有函数可以直接这样做。但是,您可以循环输入张量来构造所需的本征张量,然后对其进行重塑

# Supposing your tensor is a
out = []
for bs in range(a.size(0)):
    for c in range(a.size(1)):
        e, _ = torch.eig(a[bs, c, :, :])
        out.append(torch.max(e))
out = torch.stack(out).view(a.size(0), a.size(1))

谢谢你的解决方案!