线性代数 标量:只有一个元素的张量表示
import torchx = torch.tensor([3.0])
y = torch.tensor([2.0])
print(x+y)
print(x*y)
print(x/y)
print(x**y)
文章图片
向量:标量值组成的列表
z = torch.arange(4)
print(z)
print(z[3])
【torch|pytorch入门(三)线性代数的实现】
通过张量的索引访问任意一元素
文章图片
通过指定两个分量m n来创建一个形状为m*n的矩阵
h = torch.ones(25).reshape(5,5)
print(h)
文章图片
print(len(h))# 张量大小
print(h.shape)# 张量形状
文章图片
矩阵的转置
h = torch.arange(24).reshape(4,6)
print(h.T)
文章图片
- 对称矩阵(A == A.T)
B = torch.tensor([[1,2,3],[2,0,4],[3,4,5]])
print(B)
print(B.T)
print(B == B.T)
文章图片
- 通过分配新的内存,实现张量复制
j = torch.arange(20, dtype=torch.float32).reshape(5,4)
k = j.clone()# 将j的副本分配给k
print(k)
print(j+k)
文章图片
两个矩阵按照元素的乘法称为 哈达玛积
- 求矩阵所有元素的和
print(j.sum())
文章图片
a = torch.arange(20*2).reshape(2,5,4)
print(a.shape)
print(a.sum())
文章图片
- 指定求和张量的轴
a = torch.arange(20*2).reshape(2,5,4)
print(a.shape)
print(a.sum())
print(a)
print(a.sum(axis=0))
print(a.sum(axis=1))
文章图片
axis0:缩小了2这个维度,即上图的两个张量相加
axis0:缩小了5这个维度,即上图每个表的列相加
print(a.sum(axis=[0,1]))综合了上面两个实例
- 求平均值
print(a.sum()/a.numel())等价于print(a.mean())
print(a.mean(axis=0))等价于print(a.sum(axis=0)/a.shape[0])
- 计数求和时保持轴数不变
print(a.sum(axis=1,keepdims=True))
轴数改变
文章图片
轴数不变
文章图片
- 通过广播将a/a.sum()
print(a/a.sum())
- 某个轴计算总和
print(a.cumsum(axis=0))
- 点积(相同位置相乘)
q1 = torch.ones(4,dtype=float32) q2 = torch.ones(4,dtype=float32) print(q1) print(q2) print(torch.dot(q1,q2))
文章图片
等价于
print(sum(q1*q2))
用GPU存储张量
s = torch.randn(3000,3000,device="cuda:0") print(s)
推荐阅读
- 线性代数|05 线性代数【动手学深度学习v2】
- 深度学习|深度学习入门之线性回归(PyTorch)
- 深度学习|深度学习入门之自动求导(Pytorch)
- 深度学习|神经网络入门之矩阵计算(Pytorch)
- 深度学习|动手学深度学习----pytorch中数据操作的基本知识
- 神经网络书籍|PyTorch深度学习入门
- Django全栈开发|【Python+Django】一个博客网站的设计和代码实现
- 测试部门来了个00后卷王之王,老油条感叹真干不过,但是...
- Python学习笔记总集|06 文件和异常