《动手学深度学习》学习笔记3

线性代数

import torch

向量

# 向量
x = torch.arange(4)
print(x)
# 通过索引访问值
print(x[3])
# 长度
print(len(x))
# 形状
print(x.shape)

矩阵

# 矩阵
A = torch.arange(20).reshape(5,4)
print(A)
# 求转置矩阵
print(A.T)
# 对称矩阵 B = B.T
B = torch.tensor([[1,2,3],[2,0,4],[3,4,5]])
print(B == B.T)
# 高阶张量
x = torch.arange(24).reshape(2,3,4)
print(x)

张量运算基本性质

# 张量算法的基本性质
A = torch.arange(20,dtype=torch.float32).reshape(5,4)
B = A.clone() # 通过分配新内存,将A的一个副本分配给B
print(A,A+B,A*B)
# 通过加减一个标量、乘除一个标量,不改变张量形状
print(A+2,A*2)
# 降唯
x = torch.arange(4,dtype=torch.float32)
print(x)
# 默认情况下,沿所有轴降维
print(x.sum())
# 也可以指定轴
# 纵向,沿行求和
print(A.sum(dim=0))
# 横向,沿列求和
print(A.sum(dim=1))
# 求平均值
print(A.mean(),A.sum()/A.numel())
# 计算求和时,保持轴数不变
print(A.sum(dim=1,keepdims=True))
# 沿某个轴的累积总和
print(A.cumsum(dim=0))
# 点积:按元素乘积的和
y = torch.ones(4,dtype=torch.float32)
print(x,y)
print(torch.dot(x,y))
# 矩阵-向量积:其实就是矩阵乘法,其中一个矩阵有一个维度为1
print(A.shape,x.shape,torch.mv(A,x))
# 矩阵-矩阵乘法
B = torch.ones(4,3)
print(torch.mm(A,B))

范数

# 范数:L2范数是向量元素平方和的平方根
u = torch.tensor([3.0,-4.0])
print(torch.norm(u))
# L1范数:向量元素的绝对值之和
print(torch.abs(u).sum())
# 弗罗贝尼乌斯范数是矩阵元素平方和的平方根
print(torch.norm(torch.ones((4,9))))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值