PyTorch 中文手册学习


1. Tensor


pytorch 中数据类型Tensors

  • 创建一个5*3矩阵,只分配空间,未初始化
x = torch.empty(5, 3)
或者x = torch.Tensor(5, 3)
  • 0-1分布,全0,特定数值,全1Tensor
x = torch.rand(5, 3)0-1分布
x = torch.zeros(5, 3, dtype=torch.long)全0
x = torch.tensor([5.5, 3])
a = torch.ones(5)全1
x = torch.randn(3, 3)标准正态分布
  • Tensor运算
    tensor加法一
x+y

tensor加法二

torch.add(x,y)

tensor加法三

result = torch.Tensor(5,3)
torch.add(x,y,out=result)

y.add(x)不改变y的内容
y.add_(x)改变y的nei'r
查看tensor大小

可以使用与numpy相同的shape属性查看

print(x.shape)

也可以使用size()函数,返回的结果都是相同的

print(x.size())

零阶张量 (r = 0) 为标量 (Scalar),第一阶张量 (r = 1) 为向量 (Vector), 第二阶张量 (r = 2) 则成为矩阵 (Matrix),第三阶以上的统称为多维张量。

对于标量,我们可以直接使用 .item() 从中取出其对应的python对象的数值

_, predicted = torch.max(outputs, 1)

torch.max()
torch.max(input) → Tensor

返回输入tensor中所有元素的最大值

torch.max(input, dim)
按维度dim 返回最大值
torch.max)(a,0) 返回每一列中最大值的那个元素,且返回索引(返回最大元素在这一列的行索引
torch.max(a,1) 返回每一行中最大值的那个元素,且返回其索引(返回最大元素在这一行的列索引)
所以,_代表的是outputs按行计算的最大值,predicted代表的是索引。

sum_x = torch.sum(x, dim=1)

沿着tensor x的每行求和


2.Autograd: 自动求导机制

设置.requires_grad 为 True,那么将会追踪所有对于该张量的操作。 当完成计算后通过调用 .backward(),自动计算所有的梯度, 这个张量的所有梯度将会自动积累到 .grad 属性。
Tensor 和 Function互相连接并生成一个非循环图,它表示和存储了完整的计算历史。 每个张量都有一个.grad_fn属性,这个属性指向一个Function对象,用来反向传播计算输入的梯度。

使用with torch.no_grad()禁止已经设置requires_grad=True的向量进行自动求导,这个方法在测试集测试准确率的时候回经常用到,


3.神经网络包nn和优化器optm

torch.nn是专门为神经网络设计的模块化接口。
torch.nn.functional 这个包中包含了神经网络中使用的一些常用函数

PyTorch中已经为我们准备好了现成的网络模型,只要继承nn.Module,并实现它的forward方法,PyTorch会根据autograd,自动实现backward函数,


4.数据的加载和预处理

Dataset
Dataset是一个抽象类, 为了能够方便的读取,需要将要使用的数据包装为Dataset类。
Datalorder
DataLoader为我们提供了对Dataset的读取操作,常用参数有:batch_size(每个batch的大小), shuffle(是否进行shuffle操作), num_workers(加载数据的时候使用几个子进程)
torchvision 包
torchvision 是PyTorch中专门用来处理图像的库,
torchvision.datasets 可以理解为PyTorch团队自定义的dataset,这些dataset帮我们提前处理好了很多的图片数据集,我们拿来就可以直接使用:
torchvision.models
torchvision不仅提供了常用图片数据集,还提供了训练好的模型,可以加载之后,直接使用,或者在进行迁移学习
torchvision.transforms
transforms 模块提供了一般的图像转换操作类,用作数据的处理和增广


5.损失函数(Loss Function)

损失函数(loss function)是用来估量模型的预测值与真实值的不一致程度,它是一个非负实值函数,损失函数越小,模型的鲁棒性就越好。
nn.L1Loss:
输入x和目标y之间差的绝对值,
nn.NLLLoss:
用于多分类的负对数似然损失函数
nn.MSELoss:
均方损失函数 ,输入x和目标y之间均方差
nn.CrossEntropyLoss:
多分类用的交叉熵损失函数,一般多分类的情况会使用这个损失函数
nn.BCELoss:
计算 x 与 y 之间的二进制交叉熵。

6.梯度下降

torch.optim.SGD
随机梯度下降算法
torch.optim.RMSprop
RMSprop(root mean square prop)也是一种可以加快梯度下降的算法
torch.optim.Adam
Adam 优化算法的基本思想就是将 Momentum 和 RMSprop 结合起来形成的一种适用于不同深度学习结构的优化算法

7.激活函数

sigmod 函数


image.png

tanh 函数


image.png

ReLU 函数


image.png

Leaky Relu 函数


image.png

ReLU目前仍是最常用的activation function,在隐藏层中推荐优先尝试!

你可能感兴趣的:(PyTorch 中文手册学习)