从numpy到Pytorch的矩阵乘法(elementwise)

2024-09-30 01:24:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个numpy数组(图像和环境地图)

MatA
MatB

都有形状(256, 512, 3)

当我用numpy做乘法运算时:

^{pr2}$

我得到了想要的结果(当回到图像时通过枕头想象)

但是当我用Pythorch做的时候,我得到了一个非常奇怪的结果(甚至还没有接近前面提到的)。在

我用了以下代码:

^{3}$

出于某些原因,MatATensor和MatBtensor的形状都是

torch.Size([3, 256, 512])

前张量也一样。 当我试图将形状改为(256,512,3)时,出现了一个错误。在

有没有办法得到同样的结果?在

我是新来的Pythorch,所以任何帮助将不胜感激。在


Tags: 代码图像numpy环境地图原因数组枕头
2条回答

如果您阅读^{}的文档,您将看到这个转换不仅将numpy数组转换为torch.FloatTensor,而且还将其维数从HxWx3转换为3xHxW
要“撤销”这个你需要

 prodasNp = (prodTensor.permute(2, 0, 1) * 255).to(torch.uint8).numpy()

有关详细信息,请参见^{}。在

我建议您使用^{},这样可以很容易地将ndarrays转换为torch张量。如:

In[1]: MatA = np.random.rand(256, 512, 3)
In[2]: MatB = np.random.rand(256, 512, 3)

In[3]: MatA_torch = torch.from_numpy(MatA)
In[4]: MatB_torch = torch.from_numpy(MatB)

In[5]: mul_np = np.multiply(MatA, MatB)
In[6]: mul_torch = MatA_torch * MatB_torch

In[7]: torch.equal(torch.from_numpy(mul_np), mul_torch)
Out[7]: True

In[8]: mul_torch.shape
Out[8]: torch.Size([256, 512, 3])

如果你想让它回到numpy,只需:

^{pr2}$

相关问题 更多 >

    热门问题