数据
1.张量(tensor)
其实就是n维数组,在PyTorch和TensorFlow中张量类为Tensor,是深度学习主要的数据结构。
0维------标量
1维------向量
2维------矩阵,每一行表示一个样本,每一列表示特征
3维------图片(rgb)
4维------批量的图片
数组有三要素:形状(几行几列),数据类型,元素的值
关于多维数组的理解,以三维为例,(2, 3, 4),就是两个二维的3*4数组
2.访问
基于python中切片的形式进行部分数据的访问
3.使用
python
# 生成0~11的一个一维数组
x = torch.arange(12)
# 获取张量的形状
x.shape
# 张量元素的总数
x.numel()
# 改变张量的形状,但不影响元素的个数和值
X = x.reshape(3, 4)
# 生成全0、全1、随机、指定数据的张量
torch.zeros((2, 3, 4))
torch.ones((2, 3, 4))
torch.randn(3, 4)
torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
数据操作
1.运算
任意具有相同形状的张量, 可以用常见的标准算术运算符(+、-、*、/和**)来进行对应元素的运算
2.张量的连接
连接的前提是指定维度外的其他维度相同,连接后指定维度发生延长,其他其他维度保持不变,用dim来指示维度,对应的其实就是形状中的第几个,比如一个张量的形状是(2,3,4,5),另一个是(1,3,4,5),dim=0上进行连接,那么数据就应当是(3,3,4,5)
python
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)
3.广播机制
它使得形状不同的张量也可以进行元素运算,但该机制在张量的连接中不会起作用。
python
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
a+b
广播机制会使得两个矩阵变为一个更大的矩阵,矩阵a将复制列, 矩阵b将复制行,然后再按元素相加
python
(tensor([[0],
[1],
[2]]),
tensor([[0, 1]]))
#结果
tensor([[0, 1],
[1, 2],
[2, 3]])
4.内存问题
Y = X + Y,将取消引用Y指向的源地址,而是指向新分配的内存处的张量
可以使用X: = X + Y或X += Y来减少操作的内存开销
数据预处理
数据集通常是存储在csv文件中,导入pandas包并调用read_csv函数来进行读取
1.处理缺失值
这是数据预处理的重要环节,典型的方法包括插值法和删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值