经过前期的知识点学习,今天开始跟着李沐老师的动手学深度课程学习
一、访问元素
一个元素:[1,2] 代表着取第一行第二列
一行:[1:] 代表取第一行的所有元素
一列:[:1] 代表取第一列的所有元素
子区域:[1:3,1:] 代表取第一行和第三行并且第一列的所有元素
子区域:[::3,::2] 从数组的第一行开始,每隔三行选择一行,每隔两列选择一列
二、张量
2.1定义张量
2.1.1torch.arange()
是一个用于创建一维张量的函数,参数说明:
start: 起始值(默认是 0)
end: 结束值(默认是 None,即生成 start 到 end 的值)
step: 步长(默认是 1)
例如x = torch.arange(12)
就是生成一个从 0 开始到 11 结束的序列
2.1.2 shape和numel
x.shape == torch.Size([12])
用于访问张量的形状
x.numel() == 12
返回张量中元素的总数
2.1.3 reshape
X == x.reshape(3,4)
将x改变为3行4列的矩阵
2.1.4 zeros、ones等等
torch.zeros((2,3,4))
创建了一个三维张量,实际上是两个三行四列且元素均为0的矩阵
2.2运算
2.2.1连接张量
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]])
Z1 = torch.cat((X, Y), dim=0)
Z2 = torch.cat((X, Y), dim=1)
Z1 = tensor([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[ 2., 1., 4., 3.],
[ 1., 2., 3., 4.],
[ 4., 3., 2., 1.]])
Z2 = tensor([[ 0., 1., 2., 3., 2., 1., 4., 3.],
[ 4., 5., 6., 7., 1., 2., 3., 4.],
[ 8., 9., 10., 11., 4., 3., 2., 1.]])
2.2.2求和
sum可以所有张量内容求和为一个标量
2.2.3广播机制
a张量三行一列,b张量一行两列,则a+b为三行两列
三、数据预处理
1.碰到缺失值可以设为Nan,例如:
inputs, outputs = data.iloc[:, 0:2] # 获取前两列作为 inputs 和 outputs
inputs = inputs.fillna(inputs.mean())
将 inputs中的缺失值替换为每一列的均值,以确保模型处理时没有空值