手把手教 | 深度学习库PyTorch(附代码)

原文标题:

An Introduction to PyTorch – A Simple yet Powerful Deep LearningLibrary

作者:FAIZAN SHAIKH

翻译:和中华

本文约3600字,建议阅读15分钟
本文通过案例带你一步步上手PyTorch。

  

介绍


每隔一段时间,就会有一个有潜力改变深度学习格局的python库诞生,PyTorch就是其中一员。

 

在过去的几周里,我一直沉浸在PyTorch中,我被它的易用性所吸引。在我使用过的各种深度学习库中,到目前为止PyTorch是最灵活最易用的。

在本文中,我们将以一种更实用的方式探索PyTorch, 其中包含了基础知识和案例研究。同时我们还将对比分别用numpy和PyTorch从头构建的神经网络,以查看它们在具体实现中的相似之处。

 

让我们开始吧!

 

注意:本文假定你对深度学习有基本的认知。如果想快速了解,请先阅读此文https://www.analyticsvidhya.com/blog/2016/03/introduction-deep-learning-fundamentals-neural-networks/

 

目录

  • PyTorch概览

  • 深入技术

  • 构建神经网络之Numpy VS. PyTorch

  • 与其他深度学习库对比

  • 案例研究 --- 用PyTorch解决图像识别问题

 

PyTorch概览


PyTorch的创作者说他们遵从指令式(imperative)的编程哲学。这就意味着我们可以立即运行计算。这一点正好符合Python的编程方法学,因为我们没必要等到代码全部写完才知道它是否能运行。我们可以轻松地运行一部分代码并实时检查它。对于我这样的神经网络调试人员而言,这真是一件幸事。

 

PyTorch是一个基于python的库,它旨在提供一个灵活的深度学习开发平台。

PyTorch的工作流程尽可能接近Python的科学计算库--- numpy。

 

你可能会问,我们为什么要用PyTorch来构建深度学习模型呢?我列举三点来回答这个问题:

 

  • 易用的API:像Python一样简单易用;

  • 支持Python:如上所说,PyTorch平滑地与Python数据科学栈集成。它与Numpy如此相似,你甚至都不会注意到其中的差异;

  • 动态计算图:PyTorch没有提供具有特定功能的预定义图,而是提供给我们一个框架用于构建计算图,我们甚至可以在运行时更改它们。这对于一些情况是很有用的,比如我们在创建一个神经网络时事先并不清楚需要多少内存。

 

使用PyTorch还有其他一些好处,比如它支持多GPU,自定义数据加载器和简化的预处理器。

 

自从2016年1月初发布以来,许多研究人员已经将它纳入自己的工具箱,因为它易于构建新颖甚至非常复杂的图。话虽如此,PyTorch要想被大多数数据科学从业者所接受还需时日,因为它既是新生事物而且还在”建设中”。

 

深入技术


在深入细节之前,我们先了解一下PyTorch的工作流程。

 

PyTorch使用了指令式编程范式。也就是说,用于构建图所需的每行代码都定义了该图的一个组件。即使在图被完全构建好之前,我们也可以在这些组件上独立地执行计算。这被称为 ”define-by-run” 方法。

 

Source: http://pytorch.org/about/

 

安装PyTorch非常简单。你可以根据你的系统,按照官方文档中提到的步骤操作。例如,下面是基于我的选项所用的命令:

 

conda install pytorch torchvision cuda91 -cpytorch

 

在我们开始使用PyTorch时,应该了解的主要元素是:

 

  • PyTorch张量(Tensors)

  • 数学运算

  • Autograd模块

  • Optim模块

  • nn模块

 

下面,我们将详细介绍每一部分。

 

1. PyTorch张量


张量就是多维数组。PyTorch中的张量与Numpy中的ndarrays很相似,除此之外,PyTorch中的张量还可以在GPU上使用。PyTorch支持各种类型的张量。

 

你可以定义一个简单的一维矩阵如下:

 

# import pytorch
import torch
 
# define a tensor
torch.FloatTensor([2])

 

2
[torch.FloatTensor of size 1]

 

2. 数学运算


与numpy一样,科学计算库有效地实现数学函数是非常重要的。PyTorch提供了一个类似的接口,你可以使用超过200多种数学运算。

 

以下是一个简单的加法操作例子:

 

a = torch.FloatTensor([2])
b = torch.FloatTensor([3])
 
a + b
5
[torch.FloatTensor of size 1]

 

这难道不像是一个典型的python方法吗?我们也可以在定义过的PyTorch张量上执行各种矩阵运算。例如,我们转置一个二维矩阵:

 

matrix = torch.randn(3, 3)
matrix
-1.3531 -0.5394  0.8934
 1.7457 -0.6291 -0.0484
-1.3502 -0.6439 -1.5652
[torch.FloatTensor of size 3x3]
matrix.t()

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值