刘.涛 2019-04-09 19:54 采纳率: 0%
浏览 458

python:自写的计算行列式的函数单独运行没有问题,在整个程序中运行出现错误。

我使用pytorch创建我的模型,模型的最后需要计算半正定矩阵的行列式(半正定矩阵的所有主子式都为非负),因为pytorch并不提供行列式计算函数(又不能将需要求导的tensor转成numpy),因此我写了一个行列式的计算函数:

 def det(m):
     if len(m) <= 0:
         return None
     elif len(m) == 1:
         return m[0][0]
     else:
         s = 0
         for i in range(len(m)):
             n = [[row[a] for a in range(len(m)) if a != i] for row in m[1:]] 
             x += m[0][i] * det(n) * (-1) ** (i % 2)
         return s

此函数单独执行的时候没有问题,但是我在训练到大约第3,4epoch的时候,他会将一个半正定矩阵的行列式输出为负,如果单独将这个半正定矩阵从错误信息里拿出来单独使用这个函数运行就不会出现负值:图片说明
我试验过很多次,当前计算行列式的函数单独运行的时候不会出现错误

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 17:34
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大