欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 爱因斯坦求和 torch

爱因斯坦求和 torch

2025/4/2 9:15:21 来源:https://blog.csdn.net/jacke121/article/details/146781176  浏览:    关键词:爱因斯坦求和 torch

目录

向量点积

矩阵乘法

矩阵转置

向量转换相机坐标系



在 Python 的科学计算库(如 NumPy)中,einsum 是一个强大的函数,它可以简洁地表示各种张量运算。下面是几个不同类型的使用示例:


向量点积


向量点积是两个向量对应元素相乘后求和的结果。使用 einsum 可以非常简洁地实现。
 

import numpy as np# 创建两个向量
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 使用 einsum 计算向量点积
dot_product = np.einsum('i,i->', a, b)
print("向量点积结果:", dot_product)

矩阵乘法


矩阵乘法是将一个矩阵的行与另一个矩阵的列进行点积运算。
 

import numpy as np# 创建两个矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])# 使用 einsum 计算矩阵乘法
matrix_product = np.einsum('ij,jk->ik', A, B)
print("矩阵乘法结果:\n", matrix_product)


矩阵转置


矩阵转置是将矩阵的行和列进行交换。
 

import numpy as np# 创建一个矩阵
M = np.array([[1, 2, 3], [4, 5, 6]])# 使用 einsum 进行矩阵转置
transposed_matrix = np.einsum('ij->ji', M)
print("矩阵转置结果:\n", transposed_matrix)


这些示例展示了 einsum 在不同张量运算中的应用。它的优势在于能够用简洁的字符串表示复杂的运算,避免了使用显式的循环来实现这些运算,提高了代码的可读性和执行效率。

向量转换相机坐标系

torch.einsum('c,bCc->bC', world_up_vector, extrinsic_matrix[..., :3, :3])

等效代码:

new_world_up = torch.matmul(world_up_vector.unsqueeze(0), extrinsic_matrix[..., :3, :3])  # 形状 (B, 1, 3)
new_world_up = new_world_up.squeeze(1)  # 形状 (B, 3)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词