动手学深度学习(二)数据操作+数据预处理

N维数组是机器学习和神经网络的主要数据结构

0维:标量,一个类别

1维:向量,[1,2,3],一个特征向量

2维:3行样本*3列特征,一个样本的特征矩阵

3维:RGB图像三个通道(宽x高x通道)

4维:n个3维数组,RGB图像批量(批量大小x宽x高x通道)

5维:视频批量,图片和声音

创建数组

形状如3x4,数据类型如fp32,每个元素的值如全是0或随机数

访问元素

[1, 2] 一个元素

[1, :] 一行

[:, 1] 一列

[1:3, 1:] 第1行2行,从第1列开始到所有列

[::3, ::2] 从第0行开始,每3行一跳,从第0列开始,每2列一跳

数据操作实现

  • 赋值

import torch # 导入PyTorch工具包

x = torch.arange(12) # 0到11共12个向量

x.shape() #查看维度,张量

x # 输出x

x.numel() #元素总数,标量

X= x.reshape(3, 4) # 转换成3*4维度

torch.zeros((2, 3, 4)) # 使矩阵内元素全0

torch.ones((2, 3, 4)) # 使矩阵内元素全1

y = torch.tensor([[1.0, 2, 3], [1, 2, 3]]) # 创建二维数组

  • 运算

x + y, x - y, x * y # 对元素做运算

torch.exp(x) # 指数运算

X.sum() # 所有元素求和

  •  连结多个张量

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) # 在第几维拼接

  • 按元素判断

X == Y

  • 广播机制

a = torch.arange(3).reshape((3, 1)) # 将1复制成2

b = torch.arange(2).reshape((1, 2)) # 将1复制成3

a, b

a + b

  • 索引和切片

X[-1] # 访问最后一行

X[1: 3] # 第一行和第二行

X[0:2, :] = 12 # 区域赋值,第零和第一行赋值为12

  • 节省内存

before = id(Y) # 

Y = Y + X

id(X) == before # 结果False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要好好撸AI

你的鼓励就是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值