PyTorch DAY1: 基础语法

PyTorch 是由 Facebook 主导开发的深度学习框架,因其高效的计算过程以及良好的易用性被诸多大公司和科研人员所喜爱。18 年 5 月,PyTorch 正式宣布集成 Caffe2 和 ONNX 的功能,这是一次让业界期待的更新。本次实验中,我们将从整体上熟悉 PyTorch,并深入学习常用组件的使用。

知识点
  • 张量类型和定义
  • 索引、切片、变换
  • 张量的内部结构
  • 自动微分 Autograd
  • 深度学习框架对比

除了 Google 的 TensorFlow,Facebook 主导开发的 PyTorch 框架也越来越流行。深度学习框架大同小异,张量,计算图,自动求导,神经网络组件等概念基本都有。而神经学习框架的目的,归根结底就是方便开发者快速构建网络并完成模型训练。 

                            

所以,PyTorch 作为深度学习的框架,其实就提供了 2 个核心功能:

  • 高效率的张量计算,同时支持强大的 GPU 加速计算功能。
  • 搭建深度神经网络,构建在自动求导系统之上的网络结构。

实际上和 TensorFlow 的核心功能相似。接下来,我们了解 PyTorch 的主要模块。相比于 TensorFlow, PyTorch 模块 要精简和清晰很多。

Package(包) Description(描述)
torch 张量计算组件,兼容 NumPy 数组,且具备强大的 GPU 加速支持
torch.autograd 自动微分组件,是 PyTorch 的核心特点,支持 torch 中所有可微分的张量操作
torch.nn 深度神经网络组件,用于灵活构建不同架构的深度神经网络
torch.optim 优化计算组件,囊括了 SGD,RMSProp,LBFGS,Adam 等常用的参数优化方法
torch.multiprocessing 多进程管理组件,方便实现相同数据的不同进程中共享视图
torch.utils 工具函数组件,包含数据加载、训练等常用函数
torch.legacy(.nn/.optim) 向后兼容组件,包含移植的旧代码

张量类型和定义 

我们都知道,张量 Tensor 在深度学习中充当着空气的角色,神经网络结构中的每一次输入和输出其实就是针对张量的计算过程。所以,PyTorch 最核心的组件也就是张量计算组件。PyTorch 张量的最大特点之一是兼容 NumPy 数组,且具备强大的 GPU 加速支持。所以,如果你对 NumPy 较为熟悉,那么入门就会简单很多。

下面,我们就来学习如何在 PyTorch 中去定义张量,并对其进行运算。首先,介绍 PyTorch 中支持的 Tensor 类型。目前,PyTorch 提供了 7 种 CPU 支持的 Tensor 类型和 8 种 GPU 支持的 Tensor 类型,它们分别是: 

数据类型 dtype CPU 张量 GPU 张量
32-bit 浮点 torch.FloatTensor torch.cuda.FloatTensor
64-bit 浮点 torch.DoubleTensor torch.cuda.DoubleTensor
16-bit 半精度浮点 N/A torch.cuda.HalfTensor
8-bit 无符号整形 (0~255) torch.ByteTensor torch.cuda.ByteTensor
8-bit 有符号整形 (-128~127) torch.CharTensor torch.cuda.CharTensor
16-bit 有符号整形 torch.ShortTensor torch.cuda.ShortTensor
32-bit 有符号整形 torch.IntTensor torch.cuda.IntTensor
64-bit 有符号整形 torch.LongTensor torch.cuda.LongTensor

 其中,默认的 torch.Tensor 类型为 32-bit 浮点,也就是 torch.FloatTensor

import torch as t

t.Tensor().dtype

如果你想指定全局为某种类型的 Tensor,使得代码书写起来更加方便,就可以通过配置完成,例如:

t.set_default_tensor_type('torch.DoubleTensor')
t.Tensor().dtype

 此时,torch.Tensor 类型就被更改为 64-bit 浮点。

当然,最常用的就是默认的 torch.Tensor() ,也就是 torch.FloatTensor()。我们还原配置:

t.set_default_tensor_type('torch.FloatTensor')
t.Tensor().dtype

说完 PyTorch 中支持 Tensor 的类型,接下来我们看一看如何创建 Tensor。当然,最基础的方式是传入一个列表,即可创建:

t.Tensor([1, 2, 3])

还记得上面提到过 PyTorch 张量兼容 NumPy 数组吗?我们也可以直接通过 NumPy 数组来创建张量。

import numpy as np

t.Tensor(np.random.randn(3))

与 Numpy 一致,可以通过 shape 查看 Tensor 的形状:

t.Te
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值