大家对代码有不懂地方都可以上网去查找,最好是有一定的数据分析基础比较容易理解,李沐老师课程视频链接我放在这里了大家有不懂都可以观看课程进行学习04 数据操作 + 数据预处理【动手学深度学习v2】_哔哩哔哩_bilibili
深度学习课程电子书:大家可以使用翻译插件观看书的内容
Preface — Dive into Deep Learning 1.0.3 documentation
深度学习github项目:https://github.com/d2l-ai/d2l-zh-pytorch-slides
学习交流和机器学习项目:中文版 - D2L Discussion
更多机器学习内容文档:Practical Machine Learning — Practical Machine Learning
1)导入torch库: 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]])
torch.tensor([[[2,1,4,3],[1,2,3,4],[4,3,2,1]]])
torch.tensor([[[2,1,4,3],[1,2,3,4],[4,3,2,1]]]).shape
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)即使形状不同,我们仍然可以通过调用广播机制来执行按元素操作
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] = 9
X
15)为多个元素赋相同的值,我们只需要索引所有元素,然后为他们赋值
X[0:2, :] = 12
X
16)运行一些操作可能会造成为新结果分配内存
before = id(Y)
Y = Y+X
id(Y) == before
17)执行原地操作
Z = torch.zeros_like(Y)
print('id(Z):', id(Z))
Z[:] = X+Y
print('id(Z):', id(Z))
18)如果在后续计算中没有重复使用X, 我们也可以使用X[:] = X+Y或 X +=Y来减少操作的内存开销
before = id(X)
X +=Y
id(X) == before
before = id(X)
X[:] = X + Y
id(X) == before
19)转换为NumPy张量
A = X.numpy()
B = torch.tensor(A)
type(A), type(B)
20)将大小为1的张量转换为Python的标量
a = torch.tensor([3.5])
a, a.item(), float(a), int(a)