首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有任何有效的方法来计算协方差矩阵使用PyTorch?

是否有任何有效的方法来计算协方差矩阵使用PyTorch?
EN

Stack Overflow用户
提问于 2021-11-02 16:28:35
回答 2查看 329关注 0票数 1

我想从向量ab中计算协方差矩阵,比如k[i][j] = exp( -(a[i]-b[j])**2 )

在numpy中,我可以这样写,

代码语言:javascript
运行
复制
import numpy as np

r = np.subtract.outer(a, b)
k = np.exp(-r*r)

在PyTorch中,我可以编写简单的代码,但它比numpy慢。

代码语言:javascript
运行
复制
import torch

for i in range(len(a)):
    for j in range(len(b)):
        k[i][j] = torch.exp( -(a[i]-b[j])**2 )

如何使用PyTorch编写高效的代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-02 16:46:38

你可以使用广播:

代码语言:javascript
运行
复制
r = a[:, None] - b[None, :]
k = torch.exp(-r**2)
票数 1
EN

Stack Overflow用户

发布于 2021-11-02 16:47:54

我将使用重塑和乘法ndims数组的产品:

代码语言:javascript
运行
复制
k = torch.exp(- (a.reshape(-1,1)*b.reshape(1,-1))**2)

编辑

此外,此方法在numpy中也有效:

代码语言:javascript
运行
复制
k = np.exp(- (a.reshape(-1,1)*b.reshape(1,-1))**2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69813844

复制
相关文章

相似问题

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