1. 数据操作
N维数组样例
-
N维数组是机器学习和神经网络的主要数据结构
-
0-d
一个类别: 1.0
-
1-d
一个特征向量(一维矩阵):[1.0, 2.7, 3.4]
-
2-d
一个样本-特征矩阵-(二维矩阵)
-
3-d
RGB图片 (宽x高x通道)- 三维数组
-
4-d
一个RGB图片批量(批量大小x宽x高x通道)
-
5-d
一个视频批量(批量大小x时间x宽x高x通道)
-
创建数组需要:
- 形状
- 每个元素的数据类型
- 每个元素的值
-
访问元素
- 一个元素 :[1, 2]
- 一行:[1, :]
- 一列:[:, 1]
- 子区域:[1:3, 1:] (访问到的是1-2行【注意是开区间】,列是访问到底)
- 子区域:[::3, ::2] (访问的是第一行到最后一行,但是每三行一跳,列没两列一跳)
2. 数据操作实现
- 首先要导入torch,张量表示要给数值组成的数组,这个数组可能有多个维度
- 可以通过张量的shape属性来访问张量的形状和张量中元素的总数,使用numel来访问张量中的种数
-
要改变一个张量的形状而不改变元素数量和元素值,我们可以调用reshape函数
-
使用全0、全1、其他常量或者从特定分布种随机采样的数字- zeros() 和ones()函数
-
通过提供包含数值的python列表(或者嵌套列表)来为所需张量中的每个元素赋予确定值
- 常见的标准算数运算符(+,-,*,/,和**【求幂】)都可以被升级为按元素运算
按元素方式应用更多的计算
- 也可以将多个张量连接在一起
- 通过逻辑运算符构建二元张量
- 对张量中的所有元素进行求和会产生一个只有一个元素的张量
- 即使形状不同,我们任然可以通过调用广播机制(broadcasting mechanism)来执行按元素操作
只要维度相同,a->(3x2) b->(3x2)
- 可以用[-1]选择最后一个元素,可以用[1, 3]选择第二个和第三个元素
- 除了读取外,还可以通过指定索引来将元素写入矩阵
- 为多个元素赋相同的值,只需要索引所有元素,然后为他们赋值
- 运行一些操作
- 如果后续计算中没有重复使用x,可以使用x[:] = x+Y或者x+=Y来减少操作的内存开销
- 转化
3. 数据预处理
创建一个人工数据集,并存储在csv(逗号分隔值)文件