什么是 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);

 

PyTorch入门基础

 

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

PyTorch入门基础