更新提醒:本文已过期,PyTorch1.5正式版已在2020年4月21发布,Windows下安装最新的PyTorch1.5请移步本人另一篇博客:Windows下安装PyTorch1.5。
PyTorch简介
在2017年1月18日,facebook
下的Torch7
团队宣布PyTorch
开源后就引来了剧烈的反响。PyTorch
是 Torch
在 Python
上的衍生版本。Torch
是一个使用 Lua
语言的神经网络库, Torch
很好用, 但是 Lua
流行度不够, 所以facebook
开发团队将 Lua
的 Torch
移植到了更流行的语言 Python
上,推出了PyTorch
。
PyTorch
是一个Python
优先的深度学习框架,是一个和tensorflow,Caffe,MXnet
一样,非常底层的框架。先说下PyTorch
相比于Tensorflow
的三大优势:
一.Python优先支持
PyTorch主推的特性之一,就是支持Python(官方的提法:puts Python first
)。因为直接构建自 Python C API,PyTorch
从细粒度上直接支持python的访问。相比于原生Python
实现,引入的新概念很少,这不仅降低了 Python
用户理解的门槛,也能保证代码基本跟原生的 Python
实现一致。事实上,开发者可以直接用原生 Python
代码扩展 PyTorch
的 operation
。
而Tensorflow
总有一种用 Python
调用 C++
写的第三方动态链接库的感觉;写模型需要更多代码,无法贯彻 Python
的简约风格;而且写新的 operation
必须用 C++
开发。
二.动态图的良好支持
Tensorflow
运行必须提前建好静态计算图,然后通过feed
和run
重复执行建好的图。但是Pytorch
却不需要这么麻烦:PyTorch
的程序可以在执行时动态构建/调整计算图。相对来说,pytorch具有更好的灵活性。这得益于PyTorch
直接基于 Python C API
构建的 Python
接口。
TensorFlow
饱受诟病的痛点就是只支持静态图模型。也就是说,在处理数据前必须预先定义好一个完整的模型。如果数据非常规整,那还好。但实际工程和研究项目中的数据,难免有一些边角的情况。很多项目,其实需要大量实验才能选择正确的图模型。这就很痛苦了。因此,很多项目转而采用了PyTorch
等支持动态图模型的框架,以便在运行程序的时候动态修正模型。
不过在2017年10月31日万圣节这天,Google
发布了TensorFlow Eager Execution
(贪婪执行),为TensorFlow
添加了命令式编程的接口。启用贪婪执行后,TensorFlow
操作会立刻执行,不用通过Session.run()
执行一个预先定义的图。2017年11月,TensorFlow1.5
版本中正式加入了动态图机制Eager Execution
的支持!
三.易于Debug
Pytorch在运行时可以生成动态图,开发者就可以在堆栈跟踪中看到哪一行代码导致了错误。你甚至可以在调试器中停掉解释器并看看某个层会产生什么。
PyTorch的Windows版本安装
2018年12月8日,Pytorch1.0
正式发布,源码地址:https://github.com/pytorch/pytorch/releases
。这次最新的Pytorch1.0
有很多重大的更新,分布式更好用了,其实最重要的应该是C++
的前端支持,部署更方便,效率更高,使得Pytorch
往产品化方面又迈进了坚实的一步。
我们可以直接在Pytorch官网寻找自己所需的最新的版本进行安装。目前Pytorch1.0
支持Python2.7
,Python3.5
,Python3.6
和Python3.7
等多个Python
版本。
如果已经装了Ananconda|Python
,不管是Python3.5
,Python3.6
还是Python3.7
,都可以选择对应的cuda版本,然后直接执行下面命令安装:
conda install pytorch torchvision cuda80 -c pytorch #for cuda8
conda install pytorch torchvision -c pytorch #for cuda9
conda install pytorch torchvision cuda100 -c pytorch #for cuda10
conda install pytorch-cpu torchvision-cpu -c pytorch # for cpu version
注意:Conda
安装只支持Python3
,如果你的Ananconda|Python
是Python2
版本,请用pip
方式安装。
pip安装
这里只提示一点,pip可以安装Python2
的Pytorch1.0
的cpu版本,如果要安装gpu版本,请升级到Python3
:
Python2.7 cpu
版本:
pip install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp27-cp27mu-linux_x86_64.whl
pip install torchvision
如果上面不行,请执行:
pip install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp27-cp27m-linux_x86_64.whl
pip install torchvision
Python3.5
各个版本:
pip install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp35-cp35m-win_amd64.whl #cpu version
pip install https://download.pytorch.org/whl/cu80/torch-1.0.0-cp35-cp35m-win_amd64.whl #cuda8.0
pip install https://download.pytorch.org/whl/cu90/torch-1.0.0-cp35-cp35m-win_amd64.whl #cuda9.0
pip install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp35-cp35m-win_amd64.whl #cuda10.0
pip install torchvision
Python3.6
各个版本:
pip install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp36-cp36m-win_amd64.whl #cpu version
pip install https://download.pytorch.org/whl/cu80/torch-1.0.0-cp36-cp36m-win_amd64.whl #cuda8.0
pip install https://download.pytorch.org/whl/cu90/torch-1.0.0-cp36-cp36m-win_amd64.whl #cuda9.0
pip install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp36-cp36m-win_amd64.whl #cuda10.0
pip install torchvision
Python3.7
各个版本:
pip install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp37-cp37m-win_amd64.whl #cpu version
pip install https://download.pytorch.org/whl/cu80/torch-1.0.0-cp37-cp37m-win_amd64.whl #cuda8.0
pip install https://download.pytorch.org/whl/cu90/torch-1.0.0-cp37-cp37m-win_amd64.whl #cuda9.0
pip install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp37-cp37m-win_amd64.whl #cuda10.0
pip install torchvision
测试安装是否成功
import torch
print(torch.__version__)
如果输出1.0.0
,那么恭喜Windows下的PyTorch1.0.0
安装成功!