1.导入torch。虽然被称为PyTorch,但应导入torch而不是pytorch
import torch
2.张量表示一个数值组成的数组,这个数组可能有多个维度
x=torch.arange(12)x
3.通过张量的shape属性来访问张量的形状和张量中元素的总数
x.shape
x.numel()
4.要改变张量的形状而不改变元素数量和元素值,可以调用reshape函数
x=x.reshape(3,4)x
5.使用全0、全1、其他常量或者从特定分布中随机采样的数字
torch.zeros((2,3,4))
torch.ones((2,3,4))
6.通过提供包含数值的Python列表(或嵌套列表)来所需张量中的每个元素赋予确定值
torch.tensor([[[2,1,4,3],[1,2,3,4],[4,3,2,1]]]).shape
Channel1,Width3,Height4
7.常见的标准算术运算符+、-、*、/、**都可以被升级为按元素运算
x=torch.tensor([1.0,2,4,8])y=torch.tensor([2,2,2,2])x+y,x-y,x*y,x/y,x**y
8.按元素方式应用更多的计算
torch.exp(x)
9.可以把多个张量连结在一起
X=torch.arange(12,dtype=torch.float32).reshape((3,4))Y=torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]])torch.cat((X,Y),dim=0),torch.cat((X,Y),dim=1)
10.通过逻辑运算符构建二元张量
X==Y
11.对张量中的所有元素进行求和会产生一个只有一个元素的张量
X.sum()
12.形状不同可以通过调用广播机制(broadeastigmechanism)来执行按元素操作
a=torch.arange(3).reshape((3,1))b=torch.arange(2).reshape((1,2))a,b
a+b
13.可以用[-1]选择最后一个元素,可以用[1:3]选择第二个和第三个元素
X[-1],X[1:3]
14.除读取外,还可以通过指定索引来将元素写入矩阵。
X[1,2]=9X
15.为多个元素赋值相同的值,需要索引所有元素,然后为它们赋值
X[0:2,:]=12X
16.运行一些操作可能会导致为新结果分配内存
before=id(Y)Y=Y+Xid(Y)==before
17.执行原地操作
Z=torch.zeros_like(Y)print('id(Z):',id(Z))Z[:]=X+Yprint('id(Z):',id(Z))
18.如果在后续计算中没有重复使用×,我们也可以使用X[:]=X+Y或X+=Y来减少操作的内存开销
before=id(X)X+=Yid(X)==before
19.转换为NumPy张量
A=X.numpy()B=torch.tensor(A)type(A),type(B)