一、N维数组是机器学习和神经网络的主要数据结构
0维(标量):表示一个物体的类别
1维(向量):一个特征向量(将样本抽象为数字)
2维(矩阵):一个样本的特征矩阵(样本、特征)
3维:比如RGB三通道图片
4维:比如一个RGB图片的批量(一批3维的)
5维:一个视频的批量(加上了时间)
二、创建数组:形状、元素数据类型、元素的值
三、Torch中一些操作
- 生成数组torch.arange(n),[0,n-1)的数组
- 输出(直接x,n,m)可以输出x,n,m
- 张量和数组虽然定义不同,但使用上都混着使用了
- 访问张量的形状x.shape
-
Channel为1,width为3,height为4;中括号的层数可以判断维数;A.ndim也可获取维数。
-
-
访问张量的元素总数x.numl()
-
改变一个张量的形状而不改变元素数量和元素值x.reshape(3, 4);同样也可以改三维数组;
- 创建数组(全0、全1、其他常量):
- torch.zeros((2,3,4))
- torch.ones((2,3,4))
- torch.randn(3,4)
- torch.tensor([数组元素(可多维)])
- 数组运算:+、-、*、/、**(幂)
- 拼接(可按轴进行拼接)
- 通过逻辑运算符构建二元张量
-
-
对张量中的所有元素进行求和X.sum(),会产生一个标量
四、广播机制,对于不同形状的数组,对其进行运算时,会将其广播为相同形状的数组再进行运算
五、访问(数组的填写切片方式与python基本语句相同)
六、内存问题(原地操作与析构)
1、析构:销毁原来的变量,释放内存
2、不重复使用x,可减少内存开销,x=x+y(析构操作;x+=y(原地操作
七、数据类型转化
1、Numpy张量与torch张量转化
2、torch张量与python标量
八、数据预处理
1、创建文件:创建文件,将数据写入f文件中;
csv,每一行为一个数据,每个域使用逗号分开
2、用numpy的方式打开文件
3、处理缺失值NaN
(1)数值,取中位值
(2)非数值
4、转化为tensor