超简单!pytorch入门教程:Autograd
Posted cathy_mu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超简单!pytorch入门教程:Autograd相关的知识,希望对你有一定的参考价值。
一、autograd自动微分
autograd是专门为了BP算法设计的,所以这autograd只对输出值为标量的有用,因为损失函数的输出是一个标量。如果y是一个向量,那么backward()函数就会失效。不知道BP算法是什么的同学,估计也不知道什么是深度学习,建议先看Zen君提供的教材。
二、autograd的内部机理
variable是tensor的外包装,variable类型变量的data属性存储着tensor数据,grad属性存储关于该变量的导数,creator是代表该变量的创造者。
数据向前传输和向后传输生成导数的过程示意图
如图,假设我们有一个输入变量input(数据类型为Variable)input是用户输入的,所以其创造者creator为null值,input经过第一个数据操作operation1(比如加减乘除运算)得到output1变量(数据类型仍为Variable),这个过程中会自动生成一个function1的变量(数据类型为Function的一个实例),而output1的创造者就是这个function1。随后,output1再经过一个数据操作生成output2,这个过程也会生成另外一个实例function2,output2的创造者creator为function2。
在这个向前传播的过程中,function1和function2记录了数据input的所有操作历史,当output2运行其backward函数时,会使得function2和function1自动反向计算input的导数值并存储在grad属性中。
creator为null的变量才能被返回导数,比如input,若把整个操作流看成是一张图(Graph),那么像input这种creator为null的被称之为图的叶子(graph leaf)。而creator非null的变量比如output1和output2,是不能被返回导数的,它们的grad均为0。所以只有叶子节点才能被autograd。
作者:Zen_君
链接:http://www.jianshu.com/p/cbce2dd60120
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是关于超简单!pytorch入门教程:Autograd的主要内容,如果未能解决你的问题,请参考以下文章
PyTorch深度学习60分钟快速入门 Part2:Autograd自动化微分
PyTorch入门学习:Autogard之自动求梯度
pytorch入门Tenser与Autograd
[PyTorch入门之60分钟入门闪击战]之神经网络
Pytorch Note6 自动求导Autograd
PyTorch深度学习60分钟快速入门 Part3:神经网络