PyTorch入门 — — autograd(一)

在阅读PyTorch入门后,我们可以理解:训练一个模型实际上就是寻找一组能够使得损失函数取值最小的参数值。在寻找该参数值时,我们需要计算该损失函数关于当前参数的梯度,因此如何求得梯度值至关重要。

一般来说,对于一个简单的目标函数,我们可以手动计算其梯度,但当表达式过于复杂、目标函数不断发生变化的时候,我们就很难通过求解数学方程来计算该复合函数的梯度。目前,我们大部分人更能接受4维以下的空间,而当这些曲线存在于更高维度空间时,曲线太过抽象让我们难以理解。

由此,PyTorch的autograd应运而生,他将复杂的数学知识抽象处理,仅仅几行代码便可以帮助我们计算出高维曲线的梯度。它抽象了复杂的数学,并帮助我们“神奇地”仅用几行代码即可计算出高维曲线的梯度。本文试图用相对条理且循序渐进的方式帮助大家理解autograd。

在深入介绍autograd前,我们需要先了解一些基本的PyTorch的概念:

Tensor:张量

简单来说,张量就是PyTorch中的一个n (n>=0)维的数组结构。除数组原有的属性外,张量还支持一些其他增强功能,使其具有独特性。例如:除CPU外,还可以加载它们到GPU上以进行更快的计算;也可以通过设置.requires_grad = True(自己定义的Tensor的默认属性为False,神经网络中表达权重的Tensor默认属性为True),以跟踪所有对于该张量的操作,便于后面通过调用.backward()自动计算梯度。

在PyTorch比较早期的版本中,可以使用torch.autograd.Variable类进行创建支持梯度计算和跟踪的张量,torch.autograd.Variable包含以下5个属性:data、grad、grad_fn、requires_grad、is_leaf。但较新的PyTorch版本已经不太推荐使用Variable类了,而转为使用 torch.Tensor,他在torch.autograd.Variable的基础上,又增加了dtype、shape、device三个属性。

import torch
import numpy as np


x = torch.randn(2, 2, requires_grad = True)


# 定义float类型的numpy数组
x = np.array([1., 2., 3.]) 
x = torch.from_numpy(x)
# 设置计算梯度功能可用
x.requires_grad_(True)

注意:根据PyTorch的设计规则,目前只能为浮点张量计算梯度。因此在上述实例中,我们先创建了一个float类型的numpy数组,再将其转为Tensor类型进行梯度计算。

autograd

autograd包为张量上的所有操作提供了自动求导的功能,他生成了一个动态循环图,并在该图上记录了张量所有执行的操作历史。此图的“叶”为输入张量,“根”为输出张量,梯度的计算过程是通过从根到叶跟踪图并使用链法则将每个梯度相乘。

·  END  ·

RECOMMEND

推荐阅读

 1. 效率提升的软件大礼包

 2. 那么多可选编程语言,Why Python?

 3. 学习Python,你选对书了吗?

 4. 深度学习 —— 入门PyTorch(一)

 5. 深度学习 —— 入门PyTorch(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch是一个基于Python的开源机器学习库,它提供了丰富的工具和接口,用于构建深度学习模型和进行高效的计算。 PyTorch入门教程可以帮助初学者快速掌握PyTorch的基本概念和使用方法。下面是一个非常详细的PyTorch入门教程的概述: 1. 安装PyTorch:首先,你需要安装PyTorch库。官网提供了详细的安装指南,你可以根据自己的操作系统选择相应的安装方式。 2. 张量(Tensor):在PyTorch中,张量是最基本的数据结构。教程将详细介绍如何创建和操作张量,包括索引,切片,重塑等。 3. 自动梯度(Autograd):PyTorch具有自动计算梯度的功能,可以大大简化反向传播的过程。教程将介绍如何使用自动梯度来进行反向传播和优化模型。 4. 模型定义和训练:教程将介绍如何定义自己的深度学习模型,包括使用现有的层和模块,以及如何训练和评估模型。 5. 数据加载和处理:在实际的机器学习项目中,数据的加载和处理是非常重要的一步。教程将介绍如何使用PyTorch的数据加载器和预处理工具来处理和加载数据。 6. 迁移学习:迁移学习是利用预训练的模型来解决新任务的一种方法。教程将详细介绍如何使用PyTorch进行迁移学习,以及如何微调预训练模型。 7. GPU加速:PyTorch支持使用GPU加速模型训练和推理。教程将介绍如何将模型移动到GPU上,并使用GPU进行高效的计算。 8. 最佳实践和其他资源:教程还将介绍一些PyTorch的最佳实践,以及其他一些学习资源,包括官方文档、网上教程和社区支持。 通过完成这个非常详细的PyTorch入门教程,你将能够全面了解PyTorch的基本概念和使用方法,并能够自己构建简单的深度学习模型进行训练和推理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值