笔记:李沐《动手学深度学习》 -- 数据处理、数据计算

a.numel() 元素的个数

a[::3,::2]   每三行 每两列选一个数据

 # 跟李沐学AI 数据操作数据处理
import torch
a  = torch.arange(12)
a.numel()

a[::3,::2]

 对张量进行拼接

b = torch.tensor([[1.0,2,3,9],[1.0,2,3,9],[1.0,2,3,9]])
torch.cat((a,b),dim = 0) # 表示在第一个维度 也就是行 
torch.cat((a,b),dim = 1)

利用广播机制对不同shape的张量进行相加

a = torch.arange(3).reshape((3,1))
b = torch.arange(2).reshape((1,2))
a,b
a + b # 广播机制 

原地操作 如果后续操作没有使用到z 可以z[:]或 z += a减少操作的内存开销

before = id(a)
before # 🆔id是内存的十进制表示
a = a + b
before == id (a)

z = torch.zeros_like(a)
print(id(z))
z[:] = a
print(id(z))  # 原地操作 如果后续操作没有使用到z 可以z[:]或 z += a减少操作的内存开销

张量、numpy、标量之间的转化

# 转化为numpy
a = a.numpy()
b = torch.tensor(a)
type(a),type(b)

a = torch.tensor([3.6])
a, a.item(),float(a),int(a) # 这里把张量转化为了python标量

 深拷贝与浅拷贝

c[:] = 1 # 选取所有

c = a.clone() # 使用clone分配新的内存 深拷贝


# 浅拷贝
b = a.reshape(3,2)
b[:] = 2  # 改变 b 以后 a 也变了 a.b 指向同一个地址
id(b)

哈德玛积与点积

# 两个矩阵按元素相乘成为哈达码积
a = torch.arange(20).reshape(4,5)
b = a.clone()
a*b  

torch.dot(x,y) # 点积是相同位置的元素成积的和

# 点积可以表示为 哈的码积之后元素求和
torch.sum(x*y)

矩阵与矩阵、向量的乘积 (向量是不区分行还是列)

torch.mv(a,b) # 矩阵 向量 积

torch.mm(a,c)  # 矩阵与矩阵的乘积

范数

# 范数 L2
u = torch.tensor([3.0,4.0])

# 范数 L1 向量元素绝对值之和
torch.abs(u).sum()

# 矩阵的F范数 矩阵元素平方和的平方根
torch.norm(torch.ones(5,5))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值