首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyTorch中复矩阵的行列式

PyTorch中复矩阵的行列式
EN

Stack Overflow用户
提问于 2020-09-16 22:36:19
回答 2查看 572关注 0票数 3

在PyTroch中有计算复矩阵行列式的方法吗?

torch.det不是为“ComplexFloat”实现的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-17 07:06:33

不幸的是,它目前还没有实现。一种方法是实现您自己的版本或简单地使用np.linalg.det。下面是一个简短的函数,它计算我使用LU分解编写的复杂矩阵的行列式:

代码语言:javascript
运行
复制
def complex_det(A):
    def complex_diag(A):
        return torch.view_as_complex(torch.stack((A.real.diag(), A.imag.diag()),dim=1))
    #Perform LU decomposition to matrix A:
    A_LU, pivots = A.lu()
    P, A_L, A_U = torch.lu_unpack(A_LU, pivots)
    #Det. of multiplied matrices is multiplcation of det.:
    det = torch.prod(complex_diag(A_L)) * torch.prod(complex_diag(A_U)) * torch.det(P.real) #Could probably calculate det(P) [which is +-1] efficiently using Sylvester's determinant identity
    return det
#Test it:
A = torch.view_as_complex(torch.randn(3,3,2))
complex_det(A)
票数 1
EN

Stack Overflow用户

发布于 2021-03-20 12:29:02

在版本1.8中,PyTorch对numpy样式的torch.linalg操作具有本机支持。特别是,torch.linalg.det支持cfloatcdouble复数数据类型:

代码语言:javascript
运行
复制
torch.linalg.det(input)

计算正方形矩阵input的行列式,或批次input中每个方阵的行列式。

此函数支持浮点、浮点数、浮点数和cdouble dtype.。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63928808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档