什么是pytorch?

怎甘沉沦 提交于 2019-12-02 11:04:14

什么是pytorch?

pytorch是一个基于python的科学计算工具

  • 这个一个可以最大化利用GPU能力的NumPy的替代品
  • 这是一个深度学习的平台,可以提供最大的自由度已经计算速度

张量(Tensors)

Pytorch 的一大作用就是可以代替 Numpy 库,所以首先介绍 Tensors ,也就是张量,它相当于 Numpy 的多维数组(ndarrays)。两者的区别就是 Tensors 可以应用到 GPU 上加快计算速度。

首先导入必须的库,主要是 torch

from __future__ import print_function
import torch

声明和定义

首先是对 Tensors 的声明和定义方法,分别有以下几种:

torch.empty(): 声明一个未初始化的矩阵。

x = torch.empty(5, 3)
print(x)

output:

tensor([[5.0850e+31, 7.5338e+28, 1.3556e-19],
        [1.8530e+22, 7.0976e+22, 2.2087e+03],
        [2.9386e+29, 7.1104e-04, 1.3556e-19],
        [1.8567e-01, 1.9069e-19, 7.5553e+28],
        [5.2839e-11, 1.7589e+22, 2.5176e-12]])

torch.rand():随机初始化一个矩阵

# 创建一个随机初始化的 5*3 矩阵
rand_x = torch.rand(5, 3)
print(rand_x)

output:

tensor([[0.3365, 0.0456, 0.0225],
        [0.7974, 0.3510, 0.6405],
        [0.3835, 0.1519, 0.3030],
        [0.9807, 0.1991, 0.5750],
        [0.1904, 0.7029, 0.0582]])

torch.zeros():创建数值皆为 0 的矩阵

# 创建一个数值皆是 0,类型为 long 的矩阵
zero_x = torch.zeros(5, 3, dtype=torch.long)
print(zero_x)

output:

tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])

类似的也可以创建数值都是 1 的矩阵,调用 torch.ones

# tensor 数值是 [5.5, 3]
tensor1 = torch.tensor([5.5, 3])
print(tensor1)

output

tensor([5.5000, 3.0000])

除了上述几种方法,还可以根据已有的 tensor 变量创建新的 tensor 变量,这种做法的好处就是可以保留已有 tensor 的一些属性,包括尺寸大小、数值属性,除非是重新定义这些属性。相应的实现方法如下:

tensor.new_ones():news() 方法需要输入尺寸大小

# 显示定义新的尺寸是 5*3,数值类型是 torch.double
tensor2 = tensor1.new_ones(5, 3, dtype=torch.double)  # new_* 方法需要输入 tensor 大小
print(tensor2)

torch.randn_like(old_tensor):保留相同的尺寸大小

# 修改数值类型
tensor3 = torch.randn_like(tensor2, dtype=torch.float)
print('tensor3: ', tensor3)

output

tensor3:  tensor([[-1.0626,  0.1383, -0.3280],
        [ 0.3559,  0.4541, -1.7084],
        [-0.2861, -1.8699,  0.4762],
        [ 1.1873,  0.4596,  0.0524],
        [ 0.5862, -0.9958, -1.6368]])

最后,对 tensors 的尺寸大小获取可以采用 tensor.size() 方法:

print(tensor3.size())  
# 输出: torch.Size([5, 3])

注意: torch.Size 实际上是元组(tuple)类型,所以支持所有的元组操作。

原文

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!