gradients的一些理解

Each variable has a [.grad_fn] attribute that references a Function that has created the Variable(except for Variables created by the user their grad_fn is None).

out.backward()=out.backward(torch.Tensor([1.0]))

 1 import torch
 2 from torch.autograd import Variable
 3
 4 # part 1
 5 x = Variable(torch.ones(2, 2), requires_grad=True)
 6 y = x + 2
 7 print(y.grad_fn)    # <torch.autograd.function.AddConstantBackward object at 0x000001D8A156E048>
 8 print(y.grad)       # None
 9 z = y * y * 3
10 out = z.mean()
11 out.backward()
12 print(out.grad)     # None
13 print(y.grad)       # None
14 print(x.grad)       # d(out)/dx
15 ‘‘‘
16 Variable containing:
17  4.5000  4.5000
18  4.5000  4.5000
19 [torch.FloatTensor of size 2x2]
20 ‘‘‘
21 print(x.grad_fn)    # None
22 print(x.grad_output)
23
24
25 # part 2
26 x = torch.randn(3)
27 x = Variable(x, requires_grad=True)
28 y = x * 2
29 # print(type(y))          # <class ‘torch.autograd.variable.Variable‘>
30 # print(type(y.data))     # <class ‘torch.FloatTensor‘>
31 # print(y.data.norm())    # 4.076032686856067
32 while y.data.norm() < 1000:
33     y = y * 2
34
35 # print(x.grad)           # None
36 gradients = torch.FloatTensor([0.1, 1.0, 0.0001])
37 # print(y)  # Variable containing: 377.3516 997.8206 11.2558 [torch.FloatTensor of size 3]
38 y.backward(gradients)
39 # y.backward()            # y.backward()=y.backward(torch.Tensor([1.0]))
40 # RuntimeError: grad can be implicitly created only for scalar outputs
41
42 print(x.grad)
43 # print(x.grad_fn)          # None
44 # print(x.grad_output)      # AttributeError: ‘Variable‘ object has no attribute ‘grad_output‘
时间: 2024-08-24 22:07:16

gradients的一些理解的相关文章

CSS3实现0.5px的边框

前端页面细节处理好了才会显得精致.边框在网页中是常见的一种样式了.虽然不把它处理为0.5px看上去没毛病,但是想让你做的东西征服更多的人,这些细节处理是必须的. 今天主要说一下如何让边框显示0.5px的方法: 方法一:利用渐变 关于渐变可以看下面两篇文章做深入了解: CSS3 渐变(Gradients) 深入理解CSS3 gradient斜向线性渐变 实现原理: 把元素的伪类高度设为1px,背景渐变,一半有颜色,一半透明. 线上案例:百度糯米(没有改版的话) 代码如下: <!DOCTYPE ht

deep learning 自编码算法详细理解与代码实现(超详细)

在有监督学习中,训练样本是有类别标签的.现在假设我们只有一个没有带类别标签的训练样本集合 ,其中 .自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如 .下图是一个自编码神经网络的示例.通过训练,我们使输出 接近于输入 .当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构.举例来说,假设某个自编码神经网络的输入 是一张 张8*8 图像(共64个像素)的像素灰度值,于是 n=64,其隐藏层 中有25个隐藏神经元.

利用Theano理解深度学习——Multilayer Perceptron

一.多层感知机MLP 1.MLP概述 对于含有单个隐含层的多层感知机(single-hidden-layer Multi-Layer Perceptron, MLP),可以将其看成是一个特殊的Logistic回归分类器,这个特殊的Logistic回归分类器首先通过一个非线性变换Φ(non-linear transformation)对样本的输入进行非线性变换,然后将变换后的值作为Logistic回归的输入.非线性变换的目的是将输入的样本映射到一个空间,在该空间中,这些样本是线性可分的.这个中间层

行人检測之HOG特征(Histograms of Oriented Gradients)

之前的文章行人计数.计次提到HOG特征这个概念,这两天看了一下原版的论文,了解了一下HOG特征的原理,并依据自己的理解将这种方法的流程写了下来,假设有不正确的地方欢迎指正. HOG(Histograms of Oriented Gradients)特征的基本思想:The basic idea is that local object appearance and shape can often be characterized rather well by the distribution of

Swift Core Graphics教程之Gradients 与 Context

原文链接 : Core Graphics Tutorial Part 2: Gradients and Contexts 原文作者 : caroline 译文出自 : 开发技术前线 译者 : HarriesChen 校对者: HarriesChen 更新时间 04/15/2015 为Xcode 6.3 和 Swift1.2更新 欢迎回到我们的Swift核心绘图教程系列! 在第一部分中,你学习到了使用storyboard绘制线条和矩形. 在第二部部分中,你将深入核心绘图,使用CGContext实现

Histograms of Oriented Gradients for Human Detection

Histograms of Oriented Gradients for Human Detection 本文是论文笔记. 转载注明:http://blog.csdn.net/stdcoutzyx/article/details/40299383 Hog算子进行行人检测,是05年在CVPR上发表的经典文章.使用Hog算子提取特征,然后使用SVM来进行分类. 1. Definition Hog Descriptor:locally normalized histogram of gradient

第十四节,TensorFlow中的反卷积,反池化操作以及gradients的使用

反卷积是指,通过测量输出和已知输入重构未知输入的过程.在神经网络中,反卷积过程并不具备学习的能力,仅仅是用于可视化一个已经训练好的卷积神经网络,没有学习训练的过程.反卷积有着许多特别的应用,一般可以用于信道均衡.图像恢复.语音识别.地震学.无损探伤等未知输入估计和过程辨识方面的问题. 在神经网络的研究中,反卷积更多的是充当可视化的作用,对于一个复杂的深度卷积网络,通过每层若干个卷积核的变换,我们无法知道每个卷积核关注的是什么,变换后的特征是什么样子.通过反卷积的还原,可以对这些问题有个清晰的可视

对Attention is all you need 的理解

https://blog.csdn.net/mijiaoxiaosan/article/details/73251443 本文参考的原始论文地址:https://arxiv.org/abs/1706.03762 谷歌昨天在arxiv发了一篇论文名字教Attention Is All You Need,提出了一个只基于attention的结构来处理序列模型相关的问题,比如机器翻译.传统的神经机器翻译大都是利用RNN或者CNN来作为encoder-decoder的模型基础,而谷歌最新的只基于Atte

Python——深入理解urllib、urllib2及requests(requests不建议使用?)

深入理解urllib.urllib2及requests            python Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] .Python语法简洁而清晰,具有丰富和强大的类库. urllib and urllib2 区别 urllib和urllib2模块都做与请求URL相关的操作,但