PyTorch快餐教程(1) - 安装与编译
PyTorch是目前最火的深度学习框架之一,是Facebook在基于Lua的框架Torch的基础上改进,支持Python语言的框架。
与基于静态计算图的Tensorflow不同,PyTorch是基于动态计算图的。简单说来,就是Tensorflow用Python要先生成一个完整的计算图,然后创建Session去计算。而PyTorch将其融入到了Python调用PyTorch API的过程中,边运算,边更新计算图,边计算结果。
所以,Tensorflow的优势在于多语言的支持,反正接口语言只是生成计算图用嘛,所以Python,Java,C++,Go,Swift,JavaScript等语言都没问题,而且Tensorflow希望社区帮助扩展到更多的语言,比如C#, Haskell, Julia, Ruby, Rust和Scala。而PyTorch就要跟Python结合的更紧密一些,尤其是跟Python的科学计算库NumPy关系密切,甚至可以将PyTorch理解成可以运行在GPU上的NumPy.
PyTorch的安装
直接安装二进制包
通常情况下,可以通过
pip3 install torch torchvision
这个命令安装PyTorch
编译PyTorch
-
下载PyTorch源代码
毫不意外地,PyTorch的源代码也是从github上下载。
git clone --recursive https://github.com/pytorch/pytorch -
下载子模块代码
因为PyTorch是一个大型工程,引用了很多其他的模块。所以我们还要下载其他模块的代码,命令如下:
git submodule update --init -
编译安装
Mac下编译安装命令如下:
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python3 setup.py install
Linux下编译安装命令如下:
python setup.py install
- 一些问题的临时解决方案
注意:下面讲的不是官方正式步骤,是目前的torch版本和python 3.6情况下的特殊问题。新版本上可能已经没有此问题。
由于当前版本0.4.0与python 3.6的兼容性问题,我们还需要做一些权宜操作。
其实问题就是编译出来的so库的名字太长,以至于找不到,我们改下名就好。
Mac OS下的权宜操作:
cd /usr/local/lib/python3.6/site-packages/torch
cp _C.cpython-36m-darwin.so _C.so
cp _dl.cpython-36m-darwin.so _dl.so
Linux下的权宜操作:
cd /usr/lib64/python3.6/site-packages/torch
cp _C.cpython-36m-x86_64-linux-gnu.so _C.so
cp _dl.cpython-36m-x86_64-linux-gnu.so _dl.so
一切成功之后,我们可以通过pip3 list看下torch的版本号。目前发布的最新版是0.4.1,我现在编译的版本已经是0.5.0a0+bb15a08了。
网友评论