摘要:Tensor,它可以是 0 维、一维以及多维的数组,你可以将它看作为神经网络界的 Numpy,它与 Numpy 相似,二者可以共享内存,且之间的转换非常方便。

本文分享自华为云社区《Tensor:Pytorch神经网络界的Numpy》,作者: 择城终老 。

Tensor

Tensor,它可以是0维、一维以及多维的数组,你可以将它看作为神经网络界的Numpy,它与Numpy相似,二者可以共享内存,且之间的转换非常方便。

但它们也不相同,最大的区别就是Numpy会把ndarray放在CPU中进行加速运算,而由Torch产生的Tensor会放在GPU中进行加速运算。

对于Tensor,从接口划分,我们大致可分为2类:

1. torch.function:如torch.sum、torch.add等。

2. tensor.function:如tensor.view、tensor.add等。

而从是否修改自身来划分,会分为如下2类:

1. 不修改自身数据,如x.add(y),x的数据不变,返回一个新的Tensor。

2. 修改自身数据,如x.add_(y),运算结果存在x中,x被修改。

简单的理解就是方法名带不带下划线的问题。

现在,我们来实现2个数组对应位置相加,看看其效果究竟如何:

import torch

x = torch.tensor([1, 2])
y = torch.tensor([3, 4])
print(x + y)
print(x.add(y))
print(x)
print(x.add_(y))
print(x)

运行之后,效果如下:

Tensor:Pytorch神经网络界的Numpy_Numpy

下面,我们来正式讲解Tensor的使用方式。

更多文章请关注《万象专栏》