深度学习框架PyTorch入门与实践:第二章 快速入门

本章主要介绍两个内容,2.1节介绍如何安装PyTorch,以及如何配置学习环境;2.2节将带领读者快速浏览PyTorch中主要内容,给读者一个关于PyTorch的大致印象。

2.1 安装与配置

2.1.1 安装PyTorch

PyTorch是一款以Python语言主导开发的轻量级深度学习框架。在使用PyTorch之前,需要安装Python环境及其pip包管理工具,推荐使用Virtualenv配置虚拟Python环境。本书中所有代码使用PyTorch 0.3版本,同时兼容Python2和Python3,并全部在Python2环境中运行得到最终结果,在Python3环境测试未报错,但并不保证得到和Python2环境一致的结果。另外,本书默认使用Linux作为开发环境。

为方便用户安装使用,PyTorch官方提供了多种安装方法。本节将介绍几种常用的安装方式,读者可以根据自己的需求选用。

(1)使用pip安装

目前,使用pip安装PyTorch二进制包是最简单、最不容易出错,同时也是最适合新手的安装方式。从PyTorch官网选择操作系统、包管理器pip、Python版本及CUDA版本,会对应不同的安装命令。

以Linux平台、pip安装、Python2.7及CUDA8.0为例,安装命令如下(根据不同系统配置,可将pip改为pip2或pip3):

pip install http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl
pip install torchvision

安装好PyTorch之后,还需要安装Numpy,安装命令如下:

pip install --upgrade numpy

或者使用系统自带的包管理器(apt,yum等)安装Numpy,然后使用pip升级。

apt install python-numpy
pip install --upgrade numpy

全部安装完成后,打开Python,运行如下命令。

>>> import torch as t

没有报错则表示PyTorch安装成功。

安装过程中需要注意以下几点:

  • PyTorch对应的Python包名为torch而非pytorch。
  • 若需使用GPU版本的PyTorch,需要先配置英伟达显卡驱动,再安装PyTorch。

(2)使用conda安装

conda是Anaconda自带的包管理器。如果使用Anaconda作为Python环境,则除了使用pip安装,还可以使用conda进行安装。同样,在PyTorch官网选择操作系统、包管理器conda、Python版本及CUDA版本,对应不同的安装命令。我们在OS X下安装Python3.6、CPU版本的PyTorch为例介绍。

安装命令如下:

conda install pytorch torchvision -c soumith

conda的安装速度可能较慢,建议国内用户,尤其是教育网用户把conda源设置为清华tuna。在命令行输入如下命令即可完成修改。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

即使是使用Anaconda的用户,也建议使用pip安装PyTorch,一劳永逸,而且不易出错。

(3)从源码编译安装

不建议新手从源码编译安装,因为这种安装方式对环境比较敏感,需要用户具备一定的编译安装知识,以及应对错误的能力。但若想使用官方未发布的最新功能,或某个BUG刚修复,官方还未提供二进制安装包,而读者又亟需这个补丁,此时就需要从GitHub上下载源码编译安装。

从源码编译安装,推荐使用Anaconda环境。如果想使用GPU版本,则需安装CUDA7.5及以上和cuDNN v5及以上(如果已装有CUDA,但不想被PyTorch使用,只需设置环境变量NO_CUDA=1)。

首先,安装可选依赖。
1)Linux

export CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"
# 安装基础依赖
conda install numpy pyyaml mkl setuptools cmake gcc cffi
# 为GPU添加LAPACK支持
conda install -c soumith magma-cuda80 # 如果使用CUDA 7.5,则将magma-cuda80改成magma-cuda77
  1. OS
export CMKAE_PREFIX_PATH="$(dirnames $(which conda))/../"
conda install numpy pyyaml setuptools cmake cffi

其次,下载PyTorch源码。

git clone https://github.com/pytorch/pytorch
cd pytorch

最后,完成编译安装。
1)Linux

python setup.py install

2)OS

MACOSX_DEPLOYMMENT_TRACET=10.9 CC=clang CXX=clang++ python setup.py install

(4)使用Docker部署

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用及依赖包到一个可移植的容器中,并发布到融合流行的Linux机器上,也可实现虚拟化。PyTorch官方提供了Dockerfile,支持CUDA和cuDNN v6。可通过如下命令构建Docker镜像。

docker build -t pytorch-cudnnv6 .

通过如下命令运行:

nvidia-docker run --rm -ti --ipc=host pytorch-cudnnv6

注意:PyTorch中数据加载(DataLoader)使用了大量的共享内存,可能超过容器限制,需设置–shm-size选项或使用–ipc=host选项解决。

(5)Windows用户安装PyTorch

Windows用户安装PyTorch跟Linux、OS差不多。同样,在PyTorch官网选择操作系统、包管理器pip、Python版本及CUDA版本,对应不同的安装命令。我们在Windows下安装Python3.7、GPU版本的PyTorch为例介绍。

pip3 install torch torchvision
2.1.2 学习环境配置

工欲善其事,必先利其器。在从事科学计算相关工作时,IPython和Jupyter是两个必不可少的工具。推荐使用IPython和Jupyter Notebook学习本书的示例代码。

(1)IPython

IPython是一个交互式计算系统,可认为是增强版的Python Shell,提供强大的REPL(交互式解析器)功能。对从事科学计算的用户来说,它提供方便的可交互式学习及调试功能。

安装IPython十分简单,对于Python2的用户,安装命令如下。

pip2 install ipython==5.1

IPython 5.x是最后一个支持Python2的IPython。Python3的用户可通过如下命令安装最新版的IPython。

pip install ipython

安装完成后,在命令行输入ipython即可启动IPython,启动界面如下。

ipython
Python 3.7.4 (default, Aug  9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

输入exit命令或者按Ctrl+D快捷键可退出IPython。IPython有许多强大的功能,其中最常用的功能如下。

  • 自动补全:IPython最方便的功能之一是自动补全,输入一个函数或者变量的前几个字幕,按下Tab键,就能实现自动补全,如下图:

image.png

  • 内省:所谓内省,主要是指在Runtime时获得一个对象的全部类型信息,这对实际的学习有很大的帮助。输入某一个函数或者模块之后,接着输入?可看到它对应的帮助文档,有些帮助文档比较长,可能跨页,这是可按空格键翻页,输入q退出。例如:
In [1]: import torch as t

In [2]: t.abs?
Docstring:
abs(input, out=None) -> Tensor

Computes the element-wise absolute value of the given :attr:`input` tensor.

.. math::
    \text{out}_{i} = |\text{input}_{i}|

Args:
    input (Tensor): the input tensor
    out (Tensor, optional): the output tensor

Example::

    >>> torch.abs(torch.tensor([-1, -2, 3]))
    tensor([ 1,  2,  3])
Type:      builtin_function_or_method

在函数或模块名之后输入两个问号,例如:t.FloatTensor??即可查看这个对象的源码,但只能查看对应Python的源码,无法查看C/C++的源码。

  • 快捷键:IPython提供了很多快捷键。例如,按上箭头可以重新输入上一条代码;一致按上箭头,可以追溯到之前输入的代码。按Ctrl+C快捷键可以取消当前输入或停止运行的程序。常用的快捷键如下所示。

image.png

  • 魔术方法:IPython中还提供了一些特殊的命令,这些命令以%开头,称为魔术命令(本质是执行本地系统的命令),例如可通过%hist查看当前IPython下的输入历史等,示例如下。
In [1]: import torch as t

In [2]: a = t.Tensor(3,4)

In [3]: %timeit a.sum()    # 检测某条语句的执行时间
3.24 µs ± 23.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [4]: %hist    # 查看输入历史
import torch as t
a = t.Tensor(3,4)
%timeit a.sum()
%hist

In [5]: %paste    # 执行粘贴板中的代码,如果只粘贴不执行使用Ctrl+Shift+V快捷键
def add(x,y,z):
    return x+y+z

## -- End pasted text --

In [6]: %cat a.py    # 查看文件内容
b = a + 1
print(b.size())

In [7]: %run -i a.py    # 执行文件,-i选项代表在当前命名空间中执行
torch.Size([3, 4])

In [8]: b
Out[9]:
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])

和普通

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值