自从2017年1月Facebook发布PyTorch后,这个用来挑战Tensorflow的深度学习库的用户数一直都在增加。PyTorch是基于老牌经典学习库(Torch)进行开发的,除了Python语言的易用性,PyTorch本身也提供了很多令人欣喜的功能,比如“dynamic computational graph”之类。接下来就和我一起开始PyTorch的学习之旅。
目前来说Pytorch只支持Linux和OSX两个平台,所以我选择Ubuntu12.04来进行PyTorch的安装和使用。
选择Anaconda进行Python安装,更轻松,很多第三方库包括matplotlib, numpy, scipy都已经配置好。其实你仔细去看看anaconda安装目录下的site-packages,会发现很多好玩的东西,比如开源的机器学习平台sklearn。
为了解决访问国外网站速度慢的问题,我们选择国内清华大学的tuna镜像,先下载安装包:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
TUNA 还提供了 Anaconda仓库的镜像,运行以下命令之后,就可以从TUNA镜像源下载所需要的第三方包,速度再也不是蜗牛了。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
同时需要在~/.condarc中把- defaults那行删除,这样每次安装新的软件包就会从TUNA镜像下载。
相信我,如果按照PyTorch官方的“简单愉快”的方法去安装,是不可能的,从conda下面访问资源的速度很慢,试了几次还是不行。
## PyTorch官网提供的安装方法
conda install pytorch torchvision -c soumith
那么最后还有一个选择,install from source,果断在GitHub上找到PyTorch的repository:
https://github.com/pytorch/pytorch
接下来需要做的就是将PyTorch最新的源代码取到本地:
gitclone https://github.com/pytorch/pytorch.git
PS:这一步很重要,如果是选择download zip的方式下载PyTorch的源代码,在进行编译安装时会报错,所以这一步请务必选用gitclone下载代码。
根据PyTorch源代码的readme中的安装步骤,我们要先配置环境变量CMAKE_PREFIX_PATH,打开~/.bashrc输入:
export CMAKE_PREFIX_PATH=[anaconda root directory]
其中“[anaconda root directory]”指的是Anaconda的安装文件夹下的bin文件夹。在我的Ubuntu12.04上,安装路径如下:
export CMAKE_PREFIX_PATH=/home/wblgers/anaconda3/bin
另外由于我的GPU不支持CUDA,只能安装CPU部分,所以还需要设置环境变量NO_CUDA为1:
export NO_CUDA=1
在完成上述两个环境变量配置后需要记得这一步,使环境变量生效:
source .bashrc
然后,我们需要安装PyTorch的依赖库:
conda install numpy pyyaml mkl setuptools cmake gcc cffi
最后,一切准备就绪!马上进入愉快的编译安装过程:
python setup.py install
大概十分钟左右,提示安装成功,马上进入Python试一试:
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> x = torch.rand(5,3)
>>> print(x)
0.0592 0.4292 0.5637
0.6365 0.2012 0.5649
0.2594 0.8850 0.5157
0.0689 0.4914 0.8834
0.3978 0.7032 0.6879
[torch.FloatTensor of size 5x3]
可以看到import torch可以成功,表示PyTorch的安装完成!仔细一看PyTorch里面的数据操作和Matlab挺像的,方便上手。
TorchVision为PyTorch提供视频和图像方面的支持,包括数据库和模型等。安装好了之后可以很方便地导入很多图像数据库,比如cifar-10。下载地址为:
https://pypi.python.org/pypi/torchvision/0.1.8
我们点击Download下载whl文件,然后在Anaconda的环境中启动pip进行安装:
pip install torchvision-0.1.8-py2.py3-none-any.whl
至此,TorchVision就已经安装成功!
PyTorch官网的入门教程中有一个有关图像分类的,我们尝试着完成这个教程:
http://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html
在页面的最下面有代码的下载链接,选择下载“cifar10_tutorial.py”,直接在终端中运行程序:
python cifar10_tutorial.py
出现以下提示,正在下载cifar10数据库。
Downloading http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz
等了很久还是没下载好,我选择用其他下载工具譬如迅雷,直接下载cifar-10-python.tar.gz,大小接近180M,怪不得这么久。
然后在data文件夹里,对数据库解压:
tar -xzvf cifar-10-python.tar.gz
解压好了再选择运行代码cifar10_tutorial.py,提示数据验证通过:
Files already downloaded and verified
Files already downloaded and verified
接下来就是train和test的输出:
[1, 2000] loss: 2.223
[1, 4000] loss: 1.853
[1, 6000] loss: 1.694
[1, 8000] loss: 1.592
[1, 10000] loss: 1.521
[1, 12000] loss: 1.472
[2, 2000] loss: 1.392
[2, 4000] loss: 1.359
[2, 6000] loss: 1.335
[2, 8000] loss: 1.313
[2, 10000] loss: 1.316
[2, 12000] loss: 1.276
Finished Training
GroundTruth: cat ship ship plane
Predicted: frog ship ship ship
Accuracy of the network on the 10000 test images: 53 %
Accuracy of plane : 32 %
Accuracy of car : 75 %
Accuracy of bird : 51 %
Accuracy of cat : 19 %
Accuracy of deer : 49 %
Accuracy of dog : 28 %
Accuracy of frog : 70 %
Accuracy of horse : 68 %
Accuracy of ship : 80 %
Accuracy of truck : 56 %
结果和PyTorch的官方tutorial差不多,运行成功!
至此,PyTorch的安装、环境搭建以及安装后的代码测试就全部完成。按照这个步骤,相信你也可以很快开始PyTorch的开发!