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)类型,所以支持所有的元组操作。