李沐动手学深度学习-数据操作+数据预处理

发布时间 2023-11-04 00:58:58作者: cxy8

N维数组样例

  • n维数组是机器学习和神经网络的主要数据结构
    image
    image
    batch:批量,在深度学习中我们读取图片通常不是一张一张读而是一个批量一个批量读

创建数组

  • 形状:例如3*4的矩阵
  • 每个元素的数据类型:例如32位浮点数
  • 每个元素的值,例如全是0,或者随机数

访问元素

  • 一个元素:\({[1, 2]}\)
    image

  • 一行元素:\({[1,:]}\)
    image

  • 一列元素:\({[,:]}\)
    image

  • 子区域:\({[1:3, 1:]}\)
    \({:}\)后面没有的话表示到结尾
    image

  • 子区域:\({[::3,::2]}\)
    image

数据操作

首先我们应该导入torch,而不是pytorch

import torch
  • 张量:表示一个数值组成的数组,这个数组可能有多个维度
x = torch.arange(12)

我们可以通过张量的shape属性来访问张量的形状和张量中元素的总个数

x.shape

我们可以通过numel方法来访问张量中元素的个数

x.numel()

要改一个张量的形状而不改变元素数量和元素值,可以使用reshape函数

X = x.reshape(3,4)

使用全零、全1、其他常量或者从特定分布中随机采样的数字

torch.zeros((2, 3, 4))
torch.ones((2, 3, 4))

通过提供包含数值的python列表来为所需张量中的每个元素赋予确定的值

.tensor([[2,1,4,3], [1, 2, 3, 4], [4, 3, 2, 1]])

常见的标准算术运算符都可以被升级为按元素运算

x = torch.tensor([1.0, 2, 4, 8])
y = torch.tensor([2, 2, 2, 2])
x + y, x - y, x * y, x / y, x ** y

image
将多个张量连接在一起

X = torch.arange(12, dtype=torch.float32).reshape((3,4))
Y = torch.tensor([[2,1,4,3], [1, 2, 3, 4], [4, 3, 2, 1]])
torch.cat((X, Y), dim=0) #dim=0是按第一维合并
torch.cat((X, Y), dim=1) #dim=1是按第二维合并

image
通过逻辑运算符构建二元张量

X == Y

对张量中的所有元素进行求和会产生一个只有一个元素的张量

X.sum()

广播机制