在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的三大优势:
1.1 Python优先支持
PyTorch主推的特性之一,就是支持Python(官方的提法:puts Python first)。因为直接构建自 Python C API,PyTorch从细粒度上直接支持python的访问。相比于原生Python实现,引入的新概念很少,这不仅降低了 Python 用户理解的门槛,也能保证代码基本跟原生的 Python 实现一致。事实上,开发者可以直接用原生 Python 代码扩展 PyTorch 的 operation。
而Tensorflow总有一种用 Python 调用 C++ 写的第三方动态链接库的感觉;写模型需要更多代码,无法贯彻 Python的简约风格;而且写新的 operation 必须用 C++ 开发。
1.2 动态图的良好支持
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的支持!
1.3 易于Debug
Pytorch在运行时可以生成动态图,开发者就可以在堆栈跟踪中看到哪一行代码导致了错误。你甚至可以在调试器中停掉解释器并看看某个层会产生什么。
1.4 pytorch官网
https://pytorch.org/get-started/previous-versions/
2.1 pytorch v1.1.0在不同cuda版本下安装
Conda命令安装:Linux and Windows
如果已经装了Ananconda|Python
,选择对应的pytorch与 torchvision版本,然后直接执行下面:
# CUDA 9.0
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=9.0 -c pytorch
# CUDA 10.0
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 -c pytorch
# CPU Only
conda install pytorch-cpu==1.1.0 torchvision-cpu==0.3.0 cpuonly -c pytorch
pip命令安装:Linux and Windows
pip install torch==1.1.0 torchvision==0.3.0
2.2 pytorch v1.2.0在不同cuda版本下安装
conda安装:Linux and Windows
# CUDA 9.2
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=9.2 -c pytorch
# CUDA 10.0
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
# CPU Only
conda install pytorch==1.2.0 torchvision==0.4.0 cpuonly -c pytorch
pip安装:Linux and Windows
# CUDA 10.0
pip install torch==1.2.0 torchvision==0.4.0 -f https://download.pytorch.org/whl/torch_stable.html
# CUDA 9.2
pip install torch==1.2.0+cu92 torchvision==0.4.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html
# CPU only
pip install torch==1.2.0+cpu torchvision==0.4.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
3.1 当使用conda安装的时候,可能会遇到下载过慢的问题
这里推荐用清华源替代默认conda源的方法,可以解决下载过慢的问题。
清华conda源地址:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
3.2 添加清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
3.3 命令安装
根据Python和CUDA选择对应的版本,然后官方给出提示可通过运行:
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit==9.0 -c pytorch
但是这里一定要注意,去掉-c pytorch,安装的时候才会默认从清华源下载相应的包,因此这里用命令行:
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit==9.0 -c pytorch
参考致谢:
https://blog.csdn.net/xiangxianghehe/article/details/86300773
https://blog.csdn.net/watermelon1123/article/details/88122020