美文网首页
PyTorch 中文手册学习

PyTorch 中文手册学习

作者: 赵小闹闹 | 来源:发表于2019-03-08 11:25 被阅读0次

    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 中文手册学习

          本文链接:https://www.haomeiwen.com/subject/odzlpqtx.html