阅读本文之前需要对Numpy和TensorFlow有一些了解。
PyTorch是由Facebook(脸书公司)人工智能团队开发的一款产品。它是根据Torch开发的开源机器学习库。PyTorch的前端除了可以是python以外,也可以是C++。现在不仅Facebook在使用PyTorch,别的公司也在使用。例如,Uber的Pyro概率程序软件在后端就用到了PyTorch。
顺便说一句,FaceBook的股价在过去几年里上涨了将近10倍。
Facebook股价

PyTorch是一个基于Python语言的科技计算包。它的主要功能包括:
利用GPUs的功能替换Python中Numpy。(GPU是Graphics Processing Unit的缩写。它的意思是图形处理器。它是一种专门在个人电脑、平板电脑、智能手机等设备上进行图像和图形相关运算工作的微处理器。)
提供最灵活和最快计算速度的深度学习模型。
PyTorch和谷歌公司开发的TensorFlow有些类似。为了介绍PyTorch,我们还是从张量(Tensors)开始讲起。
PyTorch的Tensors同Numpy中ndarray类似,但是Tensors还可以在GPU上使用,提高计算速度。
首先,我们还是要先调用torch。这个类似于Numpy中我们先要调用Numpy。
from __future__ import print_function
import torch
然后,我们就可以新建矩阵。例如,我们可以建一个5行3列的空矩阵(uninitialized matrix)。这个矩阵里面开始什么都没有,以后给它赋什么值,它就会有什么值。
x = torch.empty(5, 3)
print(x)
tensor([[2.8418e-42, 0.0000e+00, 5.7593e-43],
[1.0194e-38, 2.8418e-42, 0.0000e+00],
[5.6052e-45, 1.0653e-38, 4.1327e-39],
[8.9082e-39, 9.8265e-39, 9.4592e-39],
[1.0561e-38, 1.0286e-38, 1.0469e-38]])
还可以新建一个数值随机的矩阵
x = torch.rand(5, 3)
print(x)
tensor([[0.8899, 0.3927, 0.1387],
[0.5546, 0.0182, 0.8097],
[0.7187, 0.0279, 0.3768],
[0.9782, 0.8246, 0.6570],
[0.3012, 0.5486, 0.9711]])
在Numpy中,我们可以用zeros()创建零矩阵。在Tensors中也可以创建零矩阵
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]])
你还可以用数据直接构建矩阵
x = torch.tensor([5.5, 3])
print(x)
tensor([5.5000, 3.0000])
除此之外,你还可以在已有的矩阵上,新建矩阵。例如,你可以先新建一个全部元素为1的矩阵,这同Numpy中的ones()类似。它有5行3列,数据类型为double。
x = x.new_ones(5, 3, dtype=torch.double)
print(x)
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)
然后我们在矩阵x的基础上,改变它的数据类型
x = torch.randn_like(x, dtype=torch.float)
print(x)
tensor([[-0.1714, -0.8991, 1.1465],
[ 2.2389, -0.2409, -1.0734],
[-1.4309, 0.5260, -0.7654],
[ 0.0656, 1.1064, 0.7384],
[ 1.3496, 1.8005, -0.6253]])
而矩阵x的结构没有改变。
print(x.size())
PyTorch的功能远远不止矩阵运算这么简单,它还可以和神经网络结合进行深度学习,处理各种图片。这个我们以后再介绍。
Python十二钗之Scikit-learn :特朗普的就职演说有何不同?
Python十二钗之SciPy:早知有SciPy,何必用美拍?
Python十二钗之Matplotlib:画图原来如此简单!




