Share E-Book

PyTorch深度学习实战 (侯宜军) (Z-Library)

Author 侯宜军

AI
Language Chinese

No Description

Format PDF
Size 2.5 MB
264
Views
0
Downloads
0.00
Total Donations
(First 20 pages)

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Page 1
(This page has no text content)
Page 2
版权信息 书名:PyTorch深度学习实战 作者:侯宜军 本书由北京图灵⽂化发展有限公司发⾏数字版。版权所有,侵权必 究。 您购买的图灵电⼦书仅供您个⼈使⽤,未经授权,不得以任何⽅式复 制和传播本书内容。 我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产 权。 如果购买者有侵权⾏为,我们可能对该⽤户实施包括但不限于关闭该 帐号等维权措施,并可能追究法律责任。 图灵社区会员 ⻢维峰(mimicico@gmail.com) 专享 尊重版权 内容摘要 作者简介 1 Facebook深度学习框架PyTorch 1.1 Pytorch是什么 1.2 Tensor 1.3 安装Python 1.4 安装PyTorch 2 变量
Page 3
3 求导 4 损失函数 4.1 nn.L1Loss 4.2 nn.SmoothL1Loss 4.3 nn.MSELoss 4.4 nn.BCELoss 4.5 nn.CrossEntropyLoss 4.6 nn.NLLLoss 4.7 nn.NLLLoss2d 5 优化器Optim 5.1 SGD 5.2 RMSprop 5.3 Adagrad 5.4 Adadelta 5.5 Adam 5.6 Adamax 6 线性回归 7 numpy矩阵的保存 8 模型的保存和导⼊ 9 卷积层 9.1 Conv2d 9.2 Conv1d 10 池化层 10.1 max_pool2d 10.2 avg_pool2d 10.3 max_pool1d 11 Mnist⼿写数字图像识别 11.1 加载数据 11.2 定义卷积模型
Page 4
11.3 开始训练 11.4 完整代码 11.5 验证结果 11.6 修改参数 12 图像处理 12.1 图像处理scipy.ndimage 12.2 热点图 12.3 ⾼斯滤波 12.4 图⽚翻转 12.5 轮廓检测 12.6 ⾓点 12.7 直⽅图 12.8 视频抽取图⽚ 12.9 形态学图像处理 12.9.1 膨胀和腐蚀 12.9.2 Hit和Miss 13 RNN和LSTM原理 13.1 ⻓期依赖问题 13.2 LSTM ⽹络 13.3 LSTM 的核⼼思想 13.4 逐步理解 LSTM 13.5 LSTM 的变体 14 PyTorch中的LSTM 15 Embedding层 16 LSTM⽂本分类 16.1 数据准备 16.2 数据源 16.3 中⽂分词 16.4 模型
Page 5
16.5 训练 16.6 验证结果 16.7 源码 17 参考 内容摘要 PyTorch是Facebook发布的⼀款⾮常具有个性的深度学习框架,它和 Tensorflow,Keras,Theano等其他深度学习框架都不同,它是动态计算 图模式,其应⽤模型⽀持在运⾏过程中根据运⾏参数动态改变,⽽其 他⼏种框架都是静态计算图模式,其模型在运⾏之前就已经确定。 本书共分成16个章节,第1章是Pytorch简介和环境搭建;第2〜8章是 Keras的软件框架说明,包含了层的说明,优化器和损失函数等;第9〜 10章重点介绍了深度学习中的卷积和池化的概念;第11〜12章是介绍 ⽤神经⽹络模型搭建图像识别系统的实战经验;第13〜16章介绍如何 使⽤LSTM模型来处理⾃然语⾔。本书从原理到实战、深⼊浅出的介绍 了Facebook⼈⼯智能利器Pytorch的卓越表现,只要认真读完本书,你 就能掌握Pytorch的使⽤技巧了。本书具有很强的实战性。 本书的⽬标⼈群主要定位为具有⼀定Python编程基础,对机器学习和神 经⽹络有⼀定了解的程序员们。 作者简介 侯宜军,男,南京邮电⼤学计算机系研究⽣毕业,先后在电信设计 院、摩托罗拉、医疗互联⽹初创公司等⼯作过,居住在南京。
Page 6
具有⼤型电商⽹站实战经验,多年分布式系统源码研究,深度学习框 架研究。对Keras,Pytorch,ZooKeeper,Spark,Kafka等⼤数据技术框 架较熟悉。2015~2016年曾经与他⼈共同创办六度服务号中医在线平 台,2017年初因个⼈原因退出创业团队,⽬前在苏宁云商任职⾼级技 术经理。 1 Facebook深度学习框架PyTorch 1.1 Pytorch是什么 PyTorch 是 Facebook 发布的⼀款⾮常具有个性的深度学习框架,它和 Tensorflow,Keras,Theano 等其他深度学习框架都不同,它是动态计 算图模式,其应⽤模型⽀持在运⾏过程中根据运⾏参数动态改变,⽽ 其他⼏种框架都是静态计算图模式,其模型在运⾏之前就已经确定。 Python 模块可以通过 pip 安装,国内可以换⼀个⾖瓣 pip 源,⽹速快的 惊⼈! 临时使⽤时可以使⽤下述命令: pip install pythonModuleName -i https://pypi.douban.com/simple 也可以永久更改:/root/.pip/pip.conf:
Page 7
[global] index-url = https://pypi.douban.com/simple 在 pip.conf 中,添加以上内容,就修改了默认的软件源。 到 https://pypi.python.org/pypi/ 下载所需的 python 库,直到安装 Keras。 安装以下软件包,排名不分先后: Scipy,Numpy,Theano,Tensowflow,Pyyaml,Six,pycparser,cffi, Keras 等。 (之所以要安装Keras是因为⽂中某些地⽅使⽤了Keras的数据预处理类 包) 如果是 .whl 则运⾏ pip install xxx.whl 安装;如果是 setup.py 则运⾏ python setup.py install 安装(如果是源码先运⾏ python setup.py build);如果缺少依赖包会有提⽰,到 pypi.python.org 下载对应的依 赖包再重新安装就可以了。 安装过程中需要⽤到 vc++ for python 编译器,到微软官⽹上下载,也 可从 http://aka.ms/vcpython27 进去。 安装scipy的时候报错 no lapack/blas resources found。最后找到⼀个⽅ 法,到 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载 scipy 对应的 whl 安装即可。 1.2 Tensor
Page 8
在 PyTorch 中 Tensor 代表多维数组,类似 TensorFlow 中的 matrix 或 ndarrays。 例如,⽣成⼀个 (5,3) 的 tensor: x = torch.rand(5, 3) print(x) 输出: 0.1290 0.8748 0.1096 0.7204 0.9472 0.2891 0.3106 0.1791 0.0739 0.2701 0.5434 0.9968 0.2098 0.9916 0.1561 获取它的⼤⼩: print(x.size())
Page 9
输出: torch.Size([5, 3]) 1.3 安装Python 安装 Python2.7 版本,笔者⽤的是阿⾥云服务器,现在申请的版本应该 是 2.7 版本以上,笔者当时的版本是 2.6 版本,安装 numpy 等 python 库需要 2.7 版本以上,所以先安装 python2.7。 看当前版本: [root@iZ25ix41uc3Z ~]# python --version Python 2.6.6 安装 2.7 版本步骤: 1. #wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 2. tar zxvf Python-2.7.3.tar.bz2 3. cd Python-2.7.4 4. ./configure 5. make all 6. make install
Page 10
7. make clean 8. make distclean cd /usr/local/bin ls {%} 看到 python2.7 已经安装到 /usr/local/bin ⽬录下了。 [root@iZ25ix41uc3Z bin]# /usr/local/bin/python2.7 --version Python 2.7.4 新的 python 版本是 2.7.4 最后⼀步还要将系统默认 python 指向该新的 python2.7.4 [root@iZ25ix41uc3Z bin]# rm /usr/bin/python rm:是否删除普通⽂件 "/usr/bin/python"?y [root@iZ25ix41uc3Z bin]# ln -s /usr/local/bin/python2.7 python2.7 python2.7-config [root@iZ25ix41uc3Z bin]# ln -s /usr/local/bin/python2.7 /usr/bin/python [root@iZ25ix41uc3Z bin]# ls -l /usr/bin/python lrwxrwxrwx 1 root root 24 6⽉ 25 12:56 /usr/bin/python -> /usr/local/bin/python2.7
Page 11
最后看看默认 python 版本: [root@iZ25ix41uc3Z bin]# python --version Python 2.7.4 OK,python2.7 安装成功! 安装之后发现 yum ⽤不了了,找到 /usr/bin/yum。编辑⼀下: vi /usr/bin/yum 然后将第⼀⾏的 #!/usr/bin/python 改成 #!/usr/bin/python2.6 即可。 下⾯我们再安装个 pip,pip 安装 python 第三⽅模块⾮常⽅便。 先下载 setuptools: wget --no-check-certificate http://pypi.python.org/packages/source/s/setuptools/setuptools- 0.6c11.tar.gz
Page 12
解压之后进⼊⽬录setuptools-0.6c11 安装python setup.py install 然后安装 pip,和 setuptools 过程类似: wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz 解压之后进⼊⽬录pip-1.5.5 安装python setup.py install 看看 pip 安装是否成功,执⾏: pip list 如果提⽰ HTTPERROR: {%} 则先安装 openssl:
Page 13
yum install openssl openssl-devel -y 然后再重新安装 python,别的不⽤重新安装了。 [root@iZ25ix41uc3Z Python-2.7.4]# pip list pip (1.5.4) setuptools (27.3.0) wsgiref (0.1.2) 最后我们就可以安装 numpy,scipy 等科学计算库了。 pip install numpy pip install scipy 最后验证⼀下 numpy: [root@iZ25ix41uc3Z ~]# python Python 2.7.4 (default, Jun 25 2017, 13:13:33) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2 Type "help", "copyright", "credits" or "license" for more
Page 14
information. >>> import numpy as np >>> np.array([1,2,3]) array([1, 2, 3]) >>> 成功安装 numpy。 1.4 安装PyTorch 我们先试试看 pip 安装能不能成功? 输⼊命令 pip install pytorch,显⽰结果如下: 哦,原来不⽀持 pip 安装,并且提⽰到 pytorch.org 下载安装,同时, 浏览器⾃动打开⽹址:http://pytorch.org/#pip-install-pytorch ,看看⾥⾯ 的安装说明是怎样的。
Page 15
选择我们的环境对应的 whl 安装版本,我们⽤的是 Linux,Python2.7 环境。安装命令如下: pip install http://download.pytorch.org/whl/cu75/torch- 0.1.12.post2-cp27-none-linux_x86_64.whl 等待安装完成。 安装完成后,我们输⼊命令 python,进⼊ python 交互环境,写⼀段⼩ ⼩的 pytorch 程序验证⼀下是不是安装成功了,这段⼩代码调⽤ torch 的 ones ⽅法,看看能不能正常显⽰结果。 代码: >>> import torch >>> a=torch.ones(2,2) >>> a 1 1
Page 16
1 1 [torch.FloatTensor of size 2x2] >>> OK,安装成功了,下⾯我们来⼀步步学习 pytorch 吧。 2 变量 先看看 Tensor,pytorch 中的数据都是封装成 Tensor 来引⽤的,Tensor 实际上就类似于 numpy 中的数组,两者可以⾃由转换。 ⽣成⼀个 (3,4) 维度的数组 import torch x = torch.Tensor(3,4) print("x Tensor: ",x) {%} 可以看到 torch.Tensor() ⽅法⽣成制定维度的随机数。 下⾯看看 Variable 的基本操作,引⽤ Variable:
Page 17
import torch from torch.autograd import Variable x=Variable(torch.Tensor(2,2)) print("x variable: ",x) {%} 我们看到 Variable ⽐ Tensor 多出来第⼀⾏提⽰符”Variable containing:”,说明 Variable 不光包含了数据,还包含了其他东⻄,那么 还包含什么东⻄呢? 默认 Variable 是有导数 grad 的,x.data 是数据,这⾥ x.data 就是 Tensor。x.grad 是计算过程中动态变化的导数。 print ("x.data: ",x.data, ",x.grad: ",x.grad) 此时 Variable 还未进⾏计算,因此 x.grad 为 None。 ⽰例代码 chart1.py 中的 example1 ⽅法。完整代码的执⾏结果截图如 下: {%}
Page 18
3 求导 理解 pytorch,⾸先要理解求导的概念。 数学上求导简单来说就是求取⽅程式相对于输⼊参数的变化率,也就 是加速度。这部分理论基础参考⾼等数学的内容,上过⼤学的都学 过,可能现在都忘了吧:) 求导的作⽤是⽤导数对神经⽹络的权重参数进⾏调整,注意这⾥提到 了权重参数的概念,这是神经⽹络的范畴定义了,关于神经⽹络的基 础知识本书不做介绍,读者最好先了解有关神经⽹络的基本概念再读 此书。 Pytorch 中为求导提供了专门的包,包名叫 autograd。如果⽤ autograd.Variable 来定义参数,则 Variable ⾃动定义了两个变量,data 代表原始权重数据;⽽ grad 代表求导后的数据,也就是梯度。每次迭 代过程就⽤这个 grad 对权重数据进⾏修正。 实践: import torch from torch.autograd import Variable x = Variable(torch.ones(2, 2), requires_grad=True) print(x)
Page 19
输出: 1 1 1 1 [torch.FloatTensor of size 2x2]   y=x+2 print(y) 输出: 3 3 3 3 [torch.FloatTensor of size 2x2]
Page 20
  z = y * y * 3 out = z.mean() print(z, out) 输出: (Variable containing: 27 27 27 27 [torch.FloatTensor of size 2x2] , Variable containing: 27 [torch.FloatTensor of size 1] ) [torch.FloatTensor of size 1]   out.backward()
The above is a preview of the first 20 pages. Register to read the complete e-book.

Recommended for You

Loading recommended books...
Failed to load, please try again later

Tip the Site

Scan the WeChat Pay or Alipay code to tip. No login required.

WeChat Pay
Alipay
Back to List