zoukankan      html  css  js  c++  java
  • WHAT IS PYTORCH?(pytorch官网60分钟闪电战第一节)

    import torch
    import numpy as np
    

    一、张量Tensors

    # 构造一个未初始化的5x3矩阵
    x = torch.empty(5, 3)
    # 构造一个随机初始化的矩阵
    x = torch.rand(5, 3)
    # 构造一个填充零且dtype long的矩阵 构造全1和全0会输出dtype=torch.float64
    x = torch.zeros(5, 3, dtype=torch.long)
    # 直接从数据构造张量
    x = torch.tensor([5.5, 3])
    # 或基于现有张量创建张量。这些方法将重用输入张量的属性,例如dtype,除非用户提供新值
    x = x.new_ones(5, 3, dtype=torch.double)    # x已知
    x = torch.randn_like(x, dtype=torch.float)    # override dtype!
    print(x)     # result has the same size
    print(x.size())     # torch.Size 实际上是一个元组,因此它支持所有元组操作
    

    二、运作方式Operations

    y = torch.rand(5, 3)
    print(x + y) # 加法1
    print(torch.add(x, y)) # 加法2
    # 加法3
    result = torch.empty(5, 3)
    torch.add(x, y, out=result) # 提供输出张量作为参数
    # 加法4
    y.add_(x)
    
    # 复制
    y.copy_(x)
    # 转置矩阵
    y.t_()
    # 输出矩阵的某列
    print(y[:, 4])
    
    # 调整大小
    x = torch.randn(4, 4)
    y = x.view(16)
    z = y.view(-1, 2)    # z = y.view((4, 4)) z = y.view([2, 8]) 必须达到y的16大小 若第一个参数是-1,第二个给出的为矩阵列数,行数会自动给出
    print(x.size(), y.size(), z.size())
    
    # 使用.item()将该值用作Python数字
    x = torch.randn(1)
    print(x)
    print(x.item())  
    

    三、NumPy Bridge 将Torch张量转换为NumPy数组,反之亦然

    # Torch Tensor和NumPy数组将共享其基础内存位置(如果Torch Tensor在CPU上),并且更改一个将更改另一个。
    
    # 将torch张量转换为Numpy数组
    # 除了CharTensor之外,CPU上的所有张量都支持转换为NumPy并返回
    a = torch.ones(5)
    print(a)
    b = a.numpy()
    print(b)
    a.add_(1)
    print(a)
    print(b) # 结果相同
    
    # 将Numpy数组转换为torch张量
    a = np.ones(5)
    b = torch.from_numpy(a)
    np.add(a, 1, out=a)
    print(a)
    print(b) # 结果相同
    
    

    四、CUDA张量

    # let us run this cell only if CUDA is available 有CUDA才可以运行
    # We will use ``torch.device`` objects to move tensors in and out of GPU
    
    if torch.cuda.is_available():
        device = torch.device("cuda")          # a CUDA device object
        x = torch.rand(5, 3)
        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))       # ``.to`` can also change dtype together!
    
  • 相关阅读:
    BZOJ3997:[TJOI2015]组合数学(DP,Dilworth定理)
    BZOJ4807:車(组合数学,高精度)
    BZOJ4008:[HNOI2015]亚瑟王(DP,概率期望)
    BZOJ1499:[NOI2005]瑰丽华尔兹(DP,单调队列)
    洛谷1514 引水入城
    洛谷 1018 乘积最大
    八数码难题
    CODEVS 1069关押罪犯
    CODEVS 1067 机器翻译
    洛谷 P1417 烹调方案
  • 原文地址:https://www.cnblogs.com/ycycn/p/13788360.html
Copyright © 2011-2022 走看看