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

    文章

    4562

    浏览量

    98646
  • 深度学习
    +关注

    关注

    73

    文章

    5224

    浏览量

    119866
  • pytorch
    +关注

    关注

    2

    文章

    759

    浏览量

    12822
收藏 人收藏

    评论

    相关推荐

    pytorch用来干嘛的

    pytorch用来干嘛的 PyTorch是一个开源的Python机器学习库,它主要用于创建神经网络。它提供了几乎所有深度学习工具,包括用于
    的头像 发表于 08-21 16:41 4776次阅读

    深度学习框架pytorch介绍

    深度学习框架pytorch介绍 PyTorch是由Facebook创建的开源机器学习框架,其中TensorFlow是完全基于数据流图的。它是
    的头像 发表于 08-17 16:10 1112次阅读

    深度学习框架pytorch入门与实践

    深度学习框架pytorch入门与实践 深度学习是机器学习
    的头像 发表于 08-17 16:03 1189次阅读

    PyTorch教程5.5之深度学习中的泛化

    电子发烧友网站提供《PyTorch教程5.5之深度学习中的泛化.pdf》资料免费下载
    发表于 06-05 15:31 1次下载
    <b class='flag-5'>PyTorch</b>教程5.5之<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中的泛化

    PyTorch教程12.1之优化和深度学习

    电子发烧友网站提供《PyTorch教程12.1之优化和深度学习.pdf》资料免费下载
    发表于 06-05 15:08 0次下载
    <b class='flag-5'>PyTorch</b>教程12.1之优化和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>

    PyTorch教程12.5之小批量随机梯度下降

    电子发烧友网站提供《PyTorch教程12.5之小批量随机梯度下降.pdf》资料免费下载
    发表于 06-05 15:00 0次下载
    <b class='flag-5'>PyTorch</b>教程12.5之小批量随机<b class='flag-5'>梯度</b>下降

    PyTorch教程12.4之随机梯度下降

    电子发烧友网站提供《PyTorch教程12.4之随机梯度下降.pdf》资料免费下载
    发表于 06-05 14:58 0次下载
    <b class='flag-5'>PyTorch</b>教程12.4之随机<b class='flag-5'>梯度</b>下降

    PyTorch教程13.2之异步计算

    电子发烧友网站提供《PyTorch教程13.2之异步计算.pdf》资料免费下载
    发表于 06-05 14:46 0次下载
    <b class='flag-5'>PyTorch</b>教程13.2之异步<b class='flag-5'>计算</b>

    PyTorch教程12.11之学习率调度

    电子发烧友网站提供《PyTorch教程12.11之学习率调度.pdf》资料免费下载
    发表于 06-05 14:44 0次下载
    <b class='flag-5'>PyTorch</b>教程12.11之<b class='flag-5'>学习</b>率调度

    PyTorch教程2.5之自动微分

    电子发烧友网站提供《PyTorch教程2.5之自动微分.pdf》资料免费下载
    发表于 06-05 11:38 0次下载
    <b class='flag-5'>PyTorch</b>教程2.5之<b class='flag-5'>自动</b>微分

    PyTorch程之15.2近似训练

    电子发烧友网站提供《PyTorch程之15.2近似训练.pdf》资料免费下载
    发表于 06-05 11:07 1次下载
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>15.2近似训练

    PyTorch程之循环神经网络

    电子发烧友网站提供《PyTorch程之循环神经网络.pdf》资料免费下载
    发表于 06-05 09:52 0次下载
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>循环神经网络

    PyTorch程之长短期记忆(LSTM)

    电子发烧友网站提供《PyTorch程之长短期记忆(LSTM).pdf》资料免费下载
    发表于 06-05 09:51 0次下载
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>长短期记忆(LSTM)

    PyTorch程之时间反向传播

    电子发烧友网站提供《PyTorch程之时间反向传播.pdf》资料免费下载
    发表于 06-05 09:49 0次下载
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>时间反向传播

    PyTorch程之数据预处理

    电子发烧友网站提供《PyTorch程之数据预处理.pdf》资料免费下载
    发表于 06-02 14:11 0次下载
    <b class='flag-5'>PyTorch</b>教<b class='flag-5'>程之</b>数据预处理