美文网首页Machine Learning & Recommendation & NLP & DLPytorch
Pytorch学习记录-使用Pytorch进行深度学习,60分钟

Pytorch学习记录-使用Pytorch进行深度学习,60分钟

作者: 我的昵称违规了 | 来源:发表于2019-03-21 09:26 被阅读9次

    使用Pytorch进行深度学习,60分钟闪电战
    本次课程的目标:

    • 从更高水平理解Pytorch的Tensor(张量)和神经网络
    • 训练一个小的图像分类神经网络
      注意确定已经安装了torch和torchvision

    什么是Pytorch

    Pytorch是一个针对两类受众的科学计算包

    • Numpy替代,可以使用GPU
    • 深度学习研究平台,提供灵活性和速度

    开始

    Tensors(张量)

    张量和Numpy的ndarrays类似,此外,张量还可以应用于GPU加速计算。以下是几个常用的方法
    生成一个(5,3)的0张量和一个(5,3)的随机张量

    from __future__ import print_function
    import torch
    
    x = torch.empty(5, 3)
    print('x=',x)
    
    y = torch.rand(5, 3)
    print('y=',y)
    
    x= tensor(1.00000e-43 *
           [[ 0.0000,  0.0000,  0.0000],
            [ 0.0000,  0.0000,  0.0000],
            [ 0.0000,  0.0000,  0.0000],
            [ 0.0000,  7.3989,  0.0000],
            [ 0.0000,  0.0000,  0.0000]])
    y= tensor([[ 0.9796,  0.0775,  0.3972],
            [ 0.5790,  0.8416,  0.7846],
            [ 0.8820,  0.8076,  0.9701],
            [ 0.6431,  0.1062,  0.0848],
            [ 0.0472,  0.7201,  0.4488]])
    

    生成shape为(5,3),由0填充,类型为long的张量

    a= torch.zeros(5,3,dtype=torch.long)
    print('a=',a)
    
    a= tensor([[ 0,  0,  0],
            [ 0,  0,  0],
            [ 0,  0,  0],
            [ 0,  0,  0],
            [ 0,  0,  0]])
    

    直接从数据构建张量

    # b=torch.tensor([5.6,3])
    b=torch.tensor(5.6)
    print('b=',b)
    

    获取张量的大小,注意size()生成的是一个tuple类型数据,支持所有tuple操作。

    size= x.size()
    print(size)
    

    张量的运算,可以直接相加,也可以使用torch.add()等方法。
    需要resize和reshape张量的时候,可以使用torch.view()

    c=torch.randn(4,4)
    d=c.view(16)
    e=c.view(-1,8)
    print(c.size(),d.size(),e.size())
    
    torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])
    

    如果有一个元素张量,使用.item()可以将值作为Python数字

    x=torch.randn(1)
    print(x)
    print(x.item())
    
    tensor([-0.9725])
    -0.9725168943405151
    
    Numpy桥

    将一个Torch的张量转为Numpy的array,同理也可以转回来。torch张量和Numpy的array共享同一个记忆地址,改变一个就会改变另一个。

    h=torch.ones(5)
    print(h)
    i=h.numpy()
    print(i)
    
    tensor([ 1.,  1.,  1.,  1.,  1.])
    [1. 1. 1. 1. 1.]
    
    CUDA张量

    张量可以移动到任何硬件,通过使用.to方法

    if torch.cuda.is_available():
        device = torch.device("cuda")          # a CUDA device object
        y = torch.ones_like(x, device=device)  # directly create a tensor on GPU
        x = x.to(device)                       # or just use strings ``.to("cuda")``
        z = x + y
        print(z)
        print(z.to("cpu", torch.double))
        
    x= tensor([[ 0.0000,  0.0000,  0.0000],
            [ 0.0000,  0.0000,  0.0000],
            [ 0.0000,  0.0000,  0.0000],
            [ 0.0000,  0.0000,  0.0000],
            [ 0.0000,  0.1691,  0.0000]])
    y= tensor([[ 0.5423,  0.4364,  0.6140],
            [ 0.9988,  0.3274,  0.4991],
            [ 0.1386,  0.8057,  0.3958],
            [ 0.4735,  0.1752,  0.5884],
            [ 0.8408,  0.0302,  0.3169]])
    a= tensor([[ 0,  0,  0],
            [ 0,  0,  0],
            [ 0,  0,  0],
            [ 0,  0,  0],
            [ 0,  0,  0]])
    

    相关文章

      网友评论

        本文标题:Pytorch学习记录-使用Pytorch进行深度学习,60分钟

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