0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于PyTorch的深度学习入门教程之PyTorch的自动梯度计算

ss 来源:雁回晴空 作者:雁回晴空 2021-02-16 15:26 次阅读

本文参考PyTorch官网的教程,分为五个基本模块来介绍PyTorch。为了避免文章过长,这五个模块分别在五篇博文中介绍。

Part1:PyTorch简单知识

Part2:PyTorch的自动梯度计算

Part3:使用PyTorch构建一个神经网络

Part4:训练一个神经网络分类器

Part5:数据并行化

本文是关于Part2的内容。

Part2:PyTorch的自动梯度计算

autograd package是PyTorch中所有神经网络的核心。先了解一些基本知识,然后开始训练第一个神经网络。autograd package提供了Tensors上所有运算的自动求导功能。它是一个按运行定义(define-by-run)的框架,这意味着反向传播是依据代码运行情况而定义的,并且每一个单次迭代都可能不相同。

1 变量(Variable)

autograd.Variable 是这个package的中心类。它打包了一个Tensor,并且支持几乎所有运算。一旦你完成了你的计算,可以调用.backward(),所有梯度就可以自动计算。

你可以使用.data属性来访问原始tensor。相对于变量的梯度值可以被积累到.grad中。

这里还有一个类对于自动梯度的执行是很重要的:Function(函数)

变量和函数是相互关联的,并且建立一个非循环图。每一个变量有一个.grad_fn属性,它可以引用一个创建了变量的函数(除了那些用户创建的变量——他们的grad_fn是空的)。

如果想要计算导数,可以调用Variable上的.backward()。如果变量是标量(只有一个元素),你不需要为backward()确定任何参数。但是,如果它有多个元素,你需要确定grad_output参数(这是一个具有匹配形状的tensor)。

import torch
from torch.autograd import Variable

创建一个变量:

x = Variable(torch.ones(2, 2), requires_grad=True)
print(x)

对变量做一个运算:

y = x + 2
print(y)

y作为一个运算的结果被创建,所以它有grad_fn。

print(y.grad_fn)

在y上做更多的运算:

z = y * y * 3
out = z.mean()

print(z, out)

2 梯度(Gradients)

现在来做反向传播。out.backward()等价于out.backward(torch.Tensor([1.0]))。

out.backward()

打印梯度 d(out)/dx

print(x.grad)

你应该会得到一个元素为4.5的矩阵。

你可以使用autograd做很多疯狂的事情。

x = torch.randn(3)
x = Variable(x, requires_grad=True)

y = x * 2
while y.data.norm() < 1000:
    y = y * 2

print(y)
gradients = torch.FloatTensor([0.1, 1.0, 0.0001])
y.backward(gradients)

print(x.grad)

责任编辑:xj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4771

    浏览量

    100747
  • 深度学习
    +关注

    关注

    73

    文章

    5503

    浏览量

    121144
  • pytorch
    +关注

    关注

    2

    文章

    808

    浏览量

    13219
收藏 人收藏

    评论

    相关推荐

    PyTorch 数据加载与处理方法

    PyTorch 是一个流行的开源机器学习库,它提供了强大的工具来构建和训练深度学习模型。在构建模型之前,一个重要的步骤是加载和处理数据。 1. Py
    的头像 发表于 11-05 17:37 399次阅读

    如何使用 PyTorch 进行强化学习

    计算图和自动微分功能,非常适合实现复杂的强化学习算法。 1. 环境(Environment) 在强化学习中,环境是一个抽象的概念,它定义了智能体(agent)可以执行的动作(acti
    的头像 发表于 11-05 17:34 291次阅读

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练。
    的头像 发表于 10-28 14:05 204次阅读
    <b class='flag-5'>Pytorch</b><b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练的方法

    pytorch怎么在pycharm中运行

    第一部分:PyTorch和PyCharm的安装 1.1 安装PyTorch PyTorch是一个开源的机器学习库,用于构建和训练神经网络。要在PyCharm中使用
    的头像 发表于 08-01 16:22 1403次阅读

    pytorch环境搭建详细步骤

    PyTorch作为一个广泛使用的深度学习框架,其环境搭建对于从事机器学习深度学习研究及开发的人
    的头像 发表于 08-01 15:38 816次阅读

    pytorch和python的关系是什么

    PyTorch已经成为了一个非常受欢迎的框架。本文将介绍PyTorch和Python之间的关系,以及它们在深度学习领域的应用。 Python简介 Python是一种高级、解释型、通用
    的头像 发表于 08-01 15:27 1926次阅读

    PyTorch深度学习开发环境搭建指南

    PyTorch作为一种流行的深度学习框架,其开发环境的搭建对于深度学习研究者和开发者来说至关重要。在Windows操作系统上搭建
    的头像 发表于 07-16 18:29 1033次阅读

    基于PyTorch的卷积核实例应用

    深度学习计算机视觉领域,卷积操作是一种至关重要的威廉希尔官方网站 ,尤其在图像处理和特征提取方面发挥着核心作用。PyTorch作为当前最流行的深度
    的头像 发表于 07-11 15:19 458次阅读

    pytorch中有神经网络模型吗

    当然,PyTorch是一个广泛使用的深度学习框架,它提供了许多预训练的神经网络模型。 PyTorch中的神经网络模型 1. 引言 深度
    的头像 发表于 07-11 09:59 699次阅读

    PyTorch的介绍与使用案例

    学习领域的一个重要工具。PyTorch底层由C++实现,提供了丰富的API接口,使得开发者能够高效地构建和训练神经网络模型。PyTorch不仅支持动态计算图,还提供了强大的
    的头像 发表于 07-10 14:19 395次阅读

    tensorflow和pytorch哪个更简单?

    : TensorFlow和PyTorch都是用于深度学习和机器学习的开源框架。TensorFlow由Google Brain团队开发,而PyTorc
    的头像 发表于 07-05 09:45 856次阅读

    解读PyTorch模型训练过程

    PyTorch作为一个开源的机器学习库,以其动态计算图、易于使用的API和强大的灵活性,在深度学习领域得到了广泛的应用。本文将深入解读
    的头像 发表于 07-03 16:07 1060次阅读

    PyTorch的特性和使用方法

    使用Python重新写了很多内容,使其更加灵活易用。它不仅是一个拥有自动求导功能的深度神经网络框架,还可以看作是一个加入了GPU支持的NumPy。PyTorch支持动态图,允许在运行时构建计算
    的头像 发表于 07-02 14:27 556次阅读

    如何使用PyTorch建立网络模型

    PyTorch是一个基于Python的开源机器学习库,因其易用性、灵活性和强大的动态图特性,在深度学习领域得到了广泛应用。本文将从PyTorch
    的头像 发表于 07-02 14:08 415次阅读

    TensorFlow与PyTorch深度学习框架的比较与选择

    深度学习作为人工智能领域的一个重要分支,在过去十年中取得了显著的进展。在构建和训练深度学习模型的过程中,深度
    的头像 发表于 07-02 14:04 969次阅读