PyTorch是最优秀的深度学习框架之一,它简单优雅,非常适合入门。本文将介绍如何快速学习 PyTorch ,入门深度学习。

2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,用 Python 语言发布了一个全新的机器学习工具包 PyTorch。因其在灵活性、易用性、速度方面的优秀表现,经过2年多的发展,PyTorch 已经成为从业者最重要的研发工具之一。

这次给大家带来的是 60 分钟极速入门 PyTorch 的小教程,助你轻松上手 PyTorch!大家也可直接在实验楼学习:

https://www.shiyanlou.com/courses/1073

这个 PyTorch 教程有哪些与众不同的地方?我们先来快速看一下:

一、多达 9 个实战项目,覆盖计算机视觉、自然语言、神经网络、强化学习……

课程包含多达 9 个实战项目,不会一上来就告诉你枯燥的理论,而是通过一个个有趣的项目,在实践中教会你 PyTorch 。

这些项目有:图像识别器、让机器作曲、教机器玩游戏(设计游戏AI)、图像风格迁移(比如把照片变成油画)、让机器理解文本情绪等……你会发现深度学习并非那么枯燥和遥不可及,取而代之的是进入新世界的惊喜和实现项目后的成就感~

二、大牛制作

课程是《深度学习原理与 PyTorch 实战》一书的配套教程和实验内容。主要作者 —— 张江老师是北师大系统科学学院教授、博士生导师,也是集智俱乐部、集智学园创始人,是国内该领域的引路者之一。

三、配套书籍、直播,新手也能学会

除了配套的《深度学习原理与 PyTorch 实战》书籍和实验环境,张江老师还在集智学园亲自开设了 11 节直播课程,讲解本书内容,即使你之前从没接触过深度学习,也能学会这个课程。

直播链接:https://campus.swarma.org/gcou=421

下面我们的内容摘自课程的第一节实验,你可以在 60 分钟内快速入门 PyTorch 这个优秀的框架:

1.1 实验内容

Pytorch 是由 Facebook 支持的一套深度学习开源框架,

相比较 Tensorflow,它更加容易快速上手,所以一经推出就广受欢迎。

本课程是采用 Pytorch 开源框架进行案例讲解的深度学习课程。

Tensor(张量)是 PyTorch 的基础数据结构,自动微分运算是深度学习的核心。

在本实验中我们将学习 PyTorch 中 Tensor 的用法,以及简单的自动微分变量原理,

最后,我们还会使用 PyTorch 构建一个简单的线性回归网络。

1.2 实验知识点

  • PyTorch 简介

  • PyTorch 中的张量及其运算

  • PyTorch 中的自动微分运算

  • 用 PyTorch 实现线性回归

1.3 实验环境

  • Python 3.6

  • PyTorch 1.0.1

  • Jupyter Notebook

1.4 适合人群

本课程难度为一般,属于初级实践级别课程,适合具有 Python 基础并对深度学习有一定认识的用户,将 PyTorch 应用到简单问题的解决中。

二、有关张量(Tensor)运算的练习

2.1 使用 Tensor

PyTorch 是一个开源的深度学习框架,由 Facebook 支持开发。

它的前身为 Torch,但因为 Torch 使用的编程语言是 Lua,在国内流行度很小。

Facebook 为了迎合数量更多的 Python 用户的需求,推出了 PyTorch。

PyTorch 完全开源意味着你可以轻易获取它的代码,并按照自己的需求对它进行修改。

比如让 PyTorch 支持复数运算等等。

PyTorch 还有另外一个非常出众的特点是,

使用 PyTorch 框架编写出的神经网络模型的代码非常简洁。

实现同样的功能,使用 PyTorch 框架编写的代码往往更清晰明了,

这点我们可以从下图中略见一斑:

PyTorch 的基本数据单元是张量(Tensor),它实际上是一种 N 维数组。

下面我们列举了三种张量,可以看到它们的维度阶数是不同的。

1 阶的张量可以看做是一个向量,通过索引可以取到一个 “值”。

2 阶张量可以看做为一个矩阵,通过索引可以取到一个个的向量。

3 阶张量有点抽象,不过我们可以从图中看出,

3 阶张量其实就是在 2 阶张量的矩阵中增加了一个深度。

也就是说在 3 阶张量中我们可以通过索引取到一个个的矩阵。

我们不难想象,4 阶张量也就是在 3 阶张量上增加了另外一个轴……

我们可以使用 Tensor.size() 方法获得一个张量的 “尺寸”。

在这里注意 “尺寸” 和维度是两个概念。

就比如对于上图中的 1 阶张量,它的维度为 1,尺寸为 8;

对于上图中的 2 阶张量,它的维度为 2,尺寸为(8,6)。

要使用 PyTorch,首先需要在 Python 中引入 PyTorch 的包。

▶ 示例代码:

import torch  #导入torch包

可以通过以下代码查看当前系统中 PyTorch 的版本:

▶ 示例代码:

print(torch.__version__)

可以使用 zeros,ones 方法生成包含固定值的张量:

▶ 示例代码:

y = torch.ones(5, 3) #产生一个5*3的Tensor,元素都是1
y

2.2 基本 Tensor 运算

两个 2 阶张量相加的方法实际上就是矩阵加法。

注意,要使两个张量相加,必须保证两个张量的尺寸是一致的。

▶ 示例代码:

z = x + y #两个tensor可以直接相加
z

下面的语句展示了两个 tensor 按照矩阵的方式相乘,注意 x 的尺寸是 5*3,

y 的尺寸也是 5*3 无法进行矩阵乘法,所以先将 y 进行转置。

转置操作可以用 .t() 来完成,也可以用 transpose(0,1) 来完成。

▶ 示例代码:

q = x.mm(y.t()) #x乘以y的转置
q

所有的 Tensor 的使用方法请见参考链接中的 “Tensor 支持的所有操作”。

2.3 Tensor 与 numpy.ndarray 之间的转换

PyTorch 的 Tensor 可以与 Python 的常用数据处理包 Numpy 中的多维数组进行转换。

▶ 示例代码:

import numpy as np #导入numpy包
a = np.ones([5, 3]) #建立一个5*3全是1的二维数组(矩阵)
b = torch.from_numpy(a) #利用from_numpy将其转换为tensor
b

下面是另外一种转换 Tensor 的方法,类型为 FloatTensor。

▶ 示例代码:

# 还可以是LongTensor,整型数据类型
c = torch.FloatTensor(a)
c

还可以从一个 tensor 转化为 numpy 的多维数组

▶ 示例代码:

b.numpy() 

Tensor 和 Numpy 的最大区别在于 Tensor 可以在 GPU 上进行运算。

默认情况下,Tensor 是在 CPU 上进行运算的,

如果我们需要一个 Tensor 在 GPU 上的实例,需要运行这个 Tensor 的 .cuda () 方法。

在下面的代码中,首先判断在本机上是否有 GPU 环境可用(有 NVIDIA 的 GPU,并安装了驱动)。

如果有 GPU 环境可用,那么再去获得张量 x,y 的 GPU 实例。

注意在最后打印 x 和 y 这两个 GPU 张量的和的时候,我们调用了 .cpu () 方法,

意思是将 GPU 张量转化为 CPU 张量,否则系统会报错。

▶ 示例代码:

if torch.cuda.is_available():  #检测本机器上有无GPU可用 x = x.cuda() #返回x的GPU上运算的版本    y = y.cuda()   z = x + y
print(z.cpu()) # 打印时注意要把GPU变量转化为CPU变量。

三、有关自动微分(Autograd)变量的练习

动态运算图 (Dynamic Computation Graph) 是 PyTorch 的最主要特性,

它可以让我们的计算模型更灵活、复杂,并可以让反向传播算法随时进行。

而反向传播算法就是深度神经网络的核心。

下面是一个计算图的结构以及与它对应的 PyTorch 代码:

用来构建计算图的数据叫做自动微分变量(Variable),它与 Tensor 不同。

每个 Variable 包含三个属性,分别对应着数据(data),父节点(creator),以及梯度(grad)。

其中 “梯度” 就是反向传播算法所要传播的信息。

而父节点用于将每个节点连接起来构建计算图(如上图所示)。

下面我们编写代码实际使用自动微分变量。

▶ 示例代码:

#导入自动梯度的运算包,主要用Variable这个类
from torch.autograd import Variable
#创建一个Variable,包裹了一个2*2张量,将需要计算梯度属性置为True
x = Variable(torch.ones(2, 2), requires_grad=True)
x

可以按照 Tensor 的方式进行计算

经过上面变量 x 和 y 的运算,我们就有了一个简单的计算图,它是下面这个样子的:


以上就是我们「 PyTorch 入门与实战 」课程第一节的内容节选,相信你已经对 PyTorch 和深度学习建立了一些印象。如果想进一步学习 PyTorch ,亲手实现这些有趣的深度学习项目,可以登录实验楼学习:

https://www.shiyanlou.com/courses/1073

我们还准备了几十张 20 元的 优惠券

欢迎大家在评论区领取哦~

60 分钟入门 PyTorch !这里有一份新手指南相关推荐

  1. 可下载:60分钟入门PyTorch(中文翻译全集)

    来源:机器学习初学者本文约9500字,建议阅读20分钟官网教程翻译:60分钟入门PyTorch(全集) 前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute ...

  2. 【深度学习】翻译:60分钟入门PyTorch(三)——神经网络

    前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute Blitz 翻译:林不清(https://www.zhihu.com/people/lu-guo-92 ...

  3. 【深度学习】翻译:60分钟入门PyTorch(四)——训练一个分类器

    前言 原文翻译自:Deep Learning with PyTorch: A 60 Minute Blitz 翻译:林不清(https://www.zhihu.com/people/lu-guo-92 ...

  4. 60分钟入门PyTorch,官方教程手把手教你训练第一个深度学习模型(附链接)

    来源:机器之心 本文约800字,建议阅读5分钟. 本文介绍了官方教程入门PyTorch的技巧训练. 近期的一份调查报告显示:PyTorch 已经力压 TensorFlow 成为各大顶会的主流深度学习框 ...

  5. 60分钟入门PyTorch,官方教程手把手教你训练第一个深度学习模型

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自机器之心. 近期的一份调查报告显示:PyTorch 已经力压 TensorFlow 成为各大顶会的主流深度学习框架.想发论文,不学 PyTor ...

  6. 60分钟入门pytorch

    文章目录 1. Pytorch 是什么 1.1 安装 1.2 张量(Tensors) 1.2.1 声明和定义 1.2.2 操作(Operations) 1.3 和 Numpy 数组的转换 1.3.1 ...

  7. (翻译)60分钟入门深度学习工具-PyTorch

    60分钟入门深度学习工具-PyTorch 作者:Soumith Chintala 原文翻译自: https://pytorch.org/tutorials/beginner/deep_learning ...

  8. 【转载】PYTORCH整理:60分钟入门

    PYTORCH整理:60分钟入门 官方地址:Deep Learning with PyTorch: A 60 Minute Blitz,感谢作者: Soumith Chintala 转载出处:Gaus ...

  9. PyTorch 60 分钟入门教程中的一些疑惑

    PyTorch 60 分钟入门教程中的一些疑惑 自动微分 参考: PyTorch 60 分钟入门教程. 自动微分 y.data.norm()指的是y的范数,举一个例子 假设x是[1.,2.,3.],则 ...

最新文章

  1. 我们一般的前端开发流程
  2. 你真的会用ABAP, Java和JavaScript里的constructor么?
  3. mongoose populate 返回 指定 字段
  4. struts2整合uploadify插件怎样传参数
  5. 零基础也可现学苹果Swift语言?太傻太天真
  6. 安装Sarge(二) 配置基本系统
  7. APP动态界面设计使用的利与弊
  8. 【Windows 问题系列第 13 篇】如何修改 Windows10 的鼠标指针样式
  9. flowplayer播放需求
  10. 海康威视提前批-大数据算法工程师面试
  11. 记录xmapp升级过程中解决mysql扩展中出现的问题
  12. 聚类算法之k-均值,k-中心点
  13. c中纠结不清的点(1)
  14. 操作系统,Ubuntu虚拟机编译裁剪内核
  15. quagga命令行解析
  16. 自备ACM模板 —— 数据结构篇
  17. 核查清单-小程序分享功能
  18. 短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求
  19. Jetson Nano目标检测手把手实战教程(pytorch训练、tensorrt推理,含完整代码和数据)
  20. 下个文档还要马内?还好我会Python,教大家来一手强制复制粘贴

热门文章

  1. 如何搭建在线产品手册
  2. Visio “文件” 未响应
  3. 振弦采集模块传感器接口
  4. TEA5767调频接收模块
  5. 输入大写字母,输出大小写字母及其对应的ASCII码;输入语句,将大写字母变成小写字母;将句子中每个单词的第一个字母转换为大写字母;输入一串字符,分别算出英文字母、空格、数字、其他字符的个数(C)
  6. 一个三流院校毕业的程序员奋斗历程
  7. 如何在网上获取全国计算机等级考试证书电子版
  8. php数值不对怎么办,excel显示数值和实际结果不一致怎么办
  9. python 拍照搜题_直播答题?Python助你自动搜题赢百万!
  10. 【英语:基础高阶_全场景覆盖表达】K2.雅思口语陈述的评分标准