本系列文章配套代码获取有以下两种途径:
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1XuxKa9_G00NznvSK0cr5qw?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/PyTorch
张量(Tensor):
-
多维数据表示:张量是一种能够表示多维数据的数据结构,比如一个数(标量)、一维数组(向量)、二维数组(矩阵、灰度图像)或更高维的数组(视频等)。使用张量可以方便地存储和操作这些数据。 -
GPU加速计算:PyTorch的张量支持在GPU上进行计算,通过利用GPU的并行计算能力,可以大大加速深度学习模型的训练和推理过程,这对于处理大规模数据集和复杂模型非常有用。 -
自动微分:PyTorch的张量具有自动微分功能,可以方便地计算梯度。在深度学习中,经常需要计算损失函数对模型参数的梯度,以便使用梯度下降等优化算法来更新模型参数,使用张量的自动微分功能可以简化这一过程。 -
动态计算图:PyTorch采用动态计算图的方式,这意味着计算图是在运行时构建的。使用张量作为基本数据结构,可以方便地构建和修改计算图,使得模型的开发和调试更加灵活。 -
与NumPy兼容性:PyTorch的张量与NumPy的数组(ndarray)具有很好的兼容性。用户可以在PyTorch和NumPy之间轻松地转换数据,这使得在使用PyTorch进行深度学习开发时,可以方便地利用NumPy提供的丰富数学函数和库。
综上,从工程的角度来说,可以简单的认为张量(Tensor)是一个支持高效科学计算的数组。
张量操作接口:
-
模块级函数(Module-level functions):
这些函数通常在 torch 命名空间下,可以通过 torch. 前缀来访问。它们通常不修改输入张量,而是返回一个新的张量。例如,生成随机数的 rand 方法可以通过torch.rand() 来调用。
# .rand()方法随机的使用[0,1)的均值分布进行随机生成
>>> torch.rand(3,3)
tensor([[0.1038, 0.5749, 0.5616],
[0.5033, 0.2669, 0.6490],
[0.1425, 0.8941, 0.3171]])
-
张量级方法(Tensor-level methods):
>>> a = torch.rand(4,1,28,28)
>>> a.shape
torch.Size([4, 1, 28, 28])
# replace
>>> a.reshape(4,28*28)
tensor([[0.8371, 0.9728, 0.5271, ..., 0.3528, 0.8527, 0.6425],
[0.5836, 0.0016, 0.3612, ..., 0.8342, 0.5880, 0.9205],
[0.6959, 0.9789, 0.6670, ..., 0.4895, 0.2700, 0.4503],
[0.0050, 0.3783, 0.7148, ..., 0.4339, 0.3403, 0.2258]])
>>> a.reshape(4,28*28).shape
torch.Size([4, 784])
>>> a = torch.ones(3)
>>> a
tensor([1., 1., 1.])
>>> b = torch.ones(3)
>>> b
tensor([1., 1., 1.])
# 普通方法
>>> b.add(a)
tensor([2., 2., 2.])
>>> b
tensor([1., 1., 1.])
# inplace方法
>>> b.add_(a)
tensor([2., 2., 2.])
>>> b
tensor([2., 2., 2.])
更多内容可以前往官网查看:
https://pytorch.org/

本篇文章来源于微信公众号: 码农设计师