3.6 张量API
至此,我们知道了什么是PyTorch张量以及它们是如何在幕后工作的。在总结之前,值得一看的是PyTorch提供的张量操作。 将它们全部列出在这里几乎没有用。 相反,我们将大致了解该API,并在http://pytorch.org/docs的在线文档中找到有关在何处查找内容的一些指导。
首先,在torch模块中可以进行张量及其之间的绝大多数操作,这些操作也可以称为张量对象的方法。 例如,我们先前遇到的transpose函数可以从torch模块中使用
# In[71]:
a = torch.ones(3, 2)
a_t = torch.transpose(a, 0, 1)
a.shape, a_t.shape
# Out[71]:
(torch.Size([3, 2]), torch.Size([2, 3]))
或作为张量的方法:
# In[72]:
a = torch.ones(3, 2)
a_t = a.transpose(0, 1)
a.shape, a_t.shape
# Out[72]:
(torch.Size([3, 2]), torch.Size([2, 3]))
两种形式之间没有区别; 它们可以互换使用。
我们之前提到过在线文档(http://pytorch.org/docs)。 它们是详尽且井井有条的,将张量操作分为几组:
1、创建操作-用于构建张量的函数,例如张量和from_numpy
2、索引,切片,连接,改变操作-更改张量的形状,步幅或内容的功能,例如转置(transpose)。
3、数学操作-用于通过计算处理张量的内容的函数。
(1)逐点运算-通过将函数分别应用于每个元素(例如abs和cos)来获得新张量的函数
(2)约简运算-通过遍历张量(例如均值(mean),标准差(std)和范数(norm))来计算聚合值的函数
(3)比较运算-用于评估张量上的数字谓词的函数,例如equal和max
(4)频谱操作-用于转换频域并在频域中运行的功能,例如stft和hamming_window
(5)其他运算-在向量上运算的特殊函数,例如叉(cross)或矩阵,例如迹线(trace)
(6)BLAS和LAPACK运算-遵循基本线性代数子程序(BLAS)规范的函数,用于标量,矢量-矢量,矩阵-矢量和矩阵-矩阵运算
4、随机抽样-通过从概率分布(如randn和noraml)中随机抽取来生成值的函数
5、序列化-保存和加载张量的功能,例如加载(load)和保存(save)
6、并行性-用于控制并行CPU执行的线程数的函数,例如set_num_threads
花一些时间来使用常规张量API。 本章提供了启用这种交互式探索的所有先决条件。 从下一章开始,随着本书的进行,我们还将遇到一些张量运算。