You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyTorch中计算张量的矩阵对数?

在PyTorch中实现矩阵对数(支持自动微分)

PyTorch 1.8.0及以上版本提供了torch.linalg.logm()函数,完全等价于scipy.linalg.logm()的功能,原生支持PyTorch张量,且保留自动微分能力,不需要转换成NumPy数组。

基础使用示例

import torch

# 创建带梯度追踪的正定矩阵张量
A = torch.tensor([[3.0, 1.0], [1.0, 3.0]], requires_grad=True)

# 计算矩阵对数
log_matrix = torch.linalg.logm(A)
print("矩阵对数结果:\n", log_matrix)

验证梯度传递

要确认梯度能正常用于后续运算,可以做一个简单的反向传播测试:

# 定义一个简单的损失函数(取对数矩阵所有元素的和)
loss = log_matrix.sum()
loss.backward()

# 查看原矩阵的梯度
print("原矩阵的梯度:\n", A.grad)

注意事项

  • 和scipy.linalg.logm()一样,输入矩阵需要是可逆且存在对数的矩阵(比如正定矩阵、无负实特征值的可逆矩阵),否则会出现数值不稳定或报错。
  • 函数支持批量矩阵输入(形状为(batch_size, n, n)的张量),无需手动循环处理每个样本。

内容的提问来源于stack exchange,提问作者Nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:03:30