zoukankan      html  css  js  c++  java
  • PyTorch入门基础

    什么是 PyTorch ?

    PyTorch是一个python库,它主要提供了两个高级功能:

    • GPU加速的张量计算
    • 构建在反向自动求导系统上的深度神经网络

    1. 定义数据

    一般定义数据使用torch.Tensor ,可以定义多种类型, tensor的意思是张量,是数字各种形式的总称

    import torch
    
    # 可以是一个数
    x = torch.tensor(666)
    print(x)
    tensor(666)
    # 可以是一维数组(向量)
    x = torch.tensor([1,2,3,4,5,6])
    print(x)

        tensor([1, 2, 3, 4, 5, 6])

    # 可以是任意维度的数组(张量)
    x = torch.ones(2,3,4)
    print(x)
    tensor([[[1., 1., 1., 1.],
             [1., 1., 1., 1.],
             [1., 1., 1., 1.]],
    
            [[1., 1., 1., 1.],
             [1., 1., 1., 1.],
             [1., 1., 1., 1.]]])
    # 创建一个空张量
    x = torch.empty(5,3)
    print(x)
    tensor([[1.4178e-36, 0.0000e+00, 4.4842e-44],
            [0.0000e+00,        nan, 0.0000e+00],
            [1.0979e-05, 4.2008e-05, 2.1296e+23],
            [1.0386e+21, 4.4160e-05, 1.0742e-05],
            [2.6963e+23, 4.2421e-08, 3.4548e-09]])
    # 创建一个随机初始化的张量
    x = torch.rand(5,3)
    print(x)
    tensor([[0.3077, 0.0347, 0.3033],
            [0.9099, 0.2716, 0.4310],
            [0.8286, 0.3317, 0.0536],
            [0.9529, 0.4905, 0.1403],
            [0.6899, 0.8349, 0.4015]])
    # 创建一个全0的张量,里面的数据类型为 long
    x = torch.zeros(5,3,dtype=torch.long)
    print(x)
    tensor([[0, 0, 0],
            [0, 0, 0],
            [0, 0, 0],
            [0, 0, 0],
            [0, 0, 0]])

    2. 定义操作

    凡是用Tensor进行各种运算的,都是Function

    最终,还是需要用Tensor来进行计算的,计算无非是

    • 基本运算,加减乘除,求幂求余
    • 布尔运算,大于小于,最大最小
    • 线性运算,矩阵乘法,求模,求行列式
    # 创建一个 2x4 的tensor
    m = torch.Tensor([[2, 5, 3, 7],
                      [4, 2, 1, 9]])
    
    print(m.size(0), m.size(1), m.size(), sep=' -- ')
    2 -- 4 -- torch.Size([2, 4])
    # 返回 m 中元素的数量
    print(m.numel())
    8
    # 返回 第0行,第2列的数
    print(m[0][2])
    # 返回 第1列的全部元素
    print(m[:, 1])
    # 返回 第0行的全部元素
    print(m[0, :])
    # Create tensor of numbers from 1 to 5
    # 注意这里结果是1到4,没有5
    v = torch.arange(1, 5)
    print(v)
    tensor(3.)
    tensor([5., 2.])
    tensor([2., 5., 3., 7.])

    tensor([1, 2, 3, 4])
    # matlabplotlib 只能显示numpy类型的数据,下面展示了转换数据类型,然后显示
    # 注意 randn 是生成均值为 0, 方差为 1 的随机数
    # 下面是生成 1000 个随机数,并按照 100 个 bin 统计直方图
    plt.hist(torch.randn(1000).numpy(), 100);

    # 当数据非常非常多的时候,正态分布结果非常明显
    plt.hist(torch.randn(10**6).numpy(), 100);

  • 相关阅读:
    J2EE第四周
    J2EE 第三周
    jsf简单入门
    Applrt和Ajax
    hello.java分析
    filter用户例子
    分析LogFilter
    理解session
    关于XML
    企业级应用和互联网应用的区别
  • 原文地址:https://www.cnblogs.com/wisdom-jie/p/14098054.html
Copyright © 2011-2022 走看看