数据操作:
shape:访问张量的形状
numel():访问元素个数
reshape():改变形状,不改变数量和元素值
torch.zeros():生成全0的张量 t
orch.ones():生成全1的张量
torch.tensor():自己赋特定值运算:
运算:+ - * / ** 按元素运算
两个张量的形状不同,可通过广播机制来执行按元素操作 例:x:3x1 y:1x2 相加后得到一个3x2的维度
多个张量连结:
torch.cat((x,y),dim=0)
dim=0:行方向堆叠 t
orch.cat((x,y),dim=1)
dim=1:列方向堆叠
求和:
对x中所有元素求和:x.sum()
数据预处理--数据清洗
缺失值处理:
1)删除记录:当某组中的一个数据据缺失时,删除这个组的数据 2)数据插补:使用不同方法将缺的数据补齐(均值、中位数、众数插补)
矩阵计算:
标量:由一个元素的张量表示
向量:标量值组成的列表,标量值成为向量的元素或分量
矩阵:创建一个3x2的m矩阵,通过m.T转置成2x3的矩阵
对称矩阵:m=m.T
两个矩阵的按元素乘法称为哈达玛积
将张量乘以一个或加上一个标量不会改变张量的形状
B=A.clone():将A赋值给B,分配一个新地址,不会影响A的值(后续如果对B进行操作,则不会影响A的值)
按特定轴求和:指定张量沿哪一个轴来通过求和降低(降维求和)
A=torch.arange(40).reshape(2,5,4)
a=A.sum(axis=1)沿轴1降维,每个矩阵中每一列相加
a=A.sum(axis=2)沿轴2降维,每个矩阵中每一行相加
非降维求和: 沿某个轴计算A元素的累积总和, 可以调用cumsum函数。 不会沿任何轴降低输入张量的维度。
A.cumsum(axis=0)累积计算每列的和
A.cumsum(axis=1)累积计算每行的和
求平均值:
1)A.mean()
2)A.sum()/A.numl()
可以用axis求每一列或每一行的平均值
点积:相同位置元素进行乘积求和
两个向量的点积:torch.dot(x,y)
矩阵-向量积: x:矩阵 y:向量 torch.mv(x,y)
矩阵-矩阵乘法: x,y均为矩阵 torch.mm(x,y)
范数: Frobenius范数是矩阵元素平方和的平方根
L2范数是向量元素平方和的平方根
L1范数是向量元素的绝对值之和
自动求导:
链式法则
正向累积(从x出发)
反向累积(反向传递–先计算最终的函数即y)