李沐深度学习笔记D1-数据操作
机器学习用的最多的数据结构是多维数组
0维数组: 1.0 一个数字
1维数组: [1.0,2.7,3.4] 一个数组,也叫特征向量
2维数组:
一个数字矩阵,每一行是一个样本,每一列是样本的特征
[ [1.0,2.7,3.4]
[2.0,2.2,3.9]
[3.0,2.9,3.1] ]
N维数组:
3维度数组:一张rgb图片
[ [ [1.0,2.7,3.4]
[2.0,2.2,3.9]
[3.0,2.9,3.1] ]
[ [1.0,2.7,3.4]
[2.0,2.2,3.9]
[3.0,2.9,3.1] ]]
包括行,列,RGB通道
4维数组:一个RGB图片的批量,空间上增一维
5维数组:一个视频的批量,时间上载增一维
如何创建一个数组
设置形状:如3*4矩阵
设置元素的类型:如32位浮点数
设置元素的值:如随机数,如全为0
如何设置访问元素
访问矩阵中
第一行第二列 X[0,1]
第二行第一列 X[1,0]
第一行所有 X[0,:]
第一列所有 X[:,0]
第一行到第三行 X[0:3,:] 为什么是3不是2:范围开闭
第一列到第三列 X[:,0:3]
第二行到最后 X[1:,:]
第二列到最后 X[:,1:]
第二列到最后每隔三列 X[:,1::3]
函数
x=x.arange(12) 获取前12个元素,结果为一个特征向量
x=x.shape 结果[12],代表形状是一个向量,长度为12
x.numel() 结果12,代表元素数量为12
x.reshape(3,4) 结果为一个3*4的矩阵,只改变形状
torch.zeros((2,3,4)) 创建一个2个管道,3行4列的全0数组


X[-1] 代表查询最后一行
X[1:3] 代表查询第2到3行
X[1,2]=9 代表把第2行第3列数据赋值为9
x[0:2,:]=12 代表把第1-2行所有数据赋值为12
什么是数据预处理
将文件或者数据预处理为特征向量,类似数据字段平铺
比如:
表格中的数据转为特征向量
NumRooms Alley_Pave Alley_NaN Price
NaN,1,0,127500
2.0,0,1,106000
4.0,0,1,178100
NaN,0,1,140000
转换为多维数组
[
[NaN,1,0,127500],
[2.0,0,1,106000],
[4.0,0,1,178100].
[NaN,0,1,140000]
]
线性代数
向量 -> 矩阵
矩阵乘以向量,大学计算机专业课

矩阵乘以矩阵

特征向量:不被矩阵改变方向的向量
算均值,可以求和/某个维度的形状
求和,例如一个三维矩阵,按照一个维度求和,会得到一个二维矩阵;一个二维矩阵,按照一个维度求和,会得到一个特征向量
如果想要用广播机制
比如 A/sum_A(A) 那么就要设置
sum_A=A.sum(keepDims=true),因为做广播的前提就是要有相同的维度,如果求和之后不设置保持维度,维度就会消失
