当前位置:网站首页>Understand the autograd package in pytorch
Understand the autograd package in pytorch
2022-07-07 22:27:00 【Eva215665】
This article mainly referred to pytorch Official website :pytroch Official website
as well as Dvie into deep learning A Book Pytorch The second chapter of the edition torch.Tensor
yes autograd The core class of the package . If the tensor x Properties of .requires_grad
Set to True
, Then it will start tracking (track) All operations on it ( In this way, the gradient propagation can be carried out by using the chain rule ). When complete tensor x After a series of calculations ( here x Has become y), call y.backward()
Method can automatically calculate the gradient . tensor x The gradient of will add up to x Of .grad
Properties of the .
Pay attention to
y.backward()
when , If y It's scalar , It doesn't need to bebackward()
Pass in any parameters , otherwise , You need to pass in a with y Homomorphic Tensor. See the explanation of the remaining problems for the reasons
If you don't want to be tracked , You can call .detach()
Separate it from the tracking record , This prevents future calculations from being tracked , In this way, the gradient cannot pass . Besides , You can also use withtorch.no_grad()
Wrap up the operation code that you don't want to be tracked , This method is very useful in evaluating models , Because when evaluating the model , We do not need to calculate the gradient of the trainable parameter .Function
Is another very important class .Tensor
and Function
Connect with each other and establish a acyclic graph , This figure encodes the complete calculation history . Every tensor has a .grad_fn
attribute , This attribute refers to the function that creates the tensor ( Except for user created tensors - Their grad_fn
by None
).
Each one created by an operation tensor, There is one. grad_fcn
sex , This attribute points to creating this tensor Of Function
Memory address of . Be careful , Created by the user tensor It's not .grad_fcn
Of this property .
Here are some examples to understand these concepts
Create a Tensor
X, And set its requires_grad=True
x = torch.ones(2,2, requries_grad = True)
z = (x+2) * (x+2) * 3
out = z.mean()
Let's see out
About x
Gradient of d(out)/dx
out.backward()
x.grad
among out.backward
yes out Reverse gradient ,x.grad
Check the gradient calculation results .x.grad
It's different from x
Another new tensor of , This tensor stores x
Relative to a scalar ( for example out
) Gradient of .
tensor([[4.5, 4.5], [4.5, 4.5]])
Now let's explain the remaining problems , Why is it y.backward() when , If y It's scalar , It doesn't need to be backward() Pass in any parameters ; otherwise , You need to pass in a with y Homomorphic Tensor? Simply to avoid vectors ( Even higher dimensional tensors ) Take the derivative of the tensor , And convert it to scalar to take the derivative of the tensor . for instance , Suppose the shape is m x n Matrix X After calculation, we get p x q Matrix Y,Y After calculation, we get s x t Matrix Z. Then, according to the above rules ,dZ/dY It should be a s x t x p x q Four dimensional tensor ,dY/dX It's a p x q x m x n Four dimensional tensor of . The problem is coming. , How to back spread ? How to multiply two four-dimensional tensors ??? How do I get by ??? Even if we can solve the problem of how to multiply two four-dimensional tensors , How to multiply the four-dimensional and three-dimensional tensors ? How to find the derivative of the derivative , This series of questions , I feel like I'm going crazy …… To avoid this problem , We don't allow a tensor to derive from a tensor , Only scalar derivatives of tensors are allowed , The derivative is a tensor isomorphic to the independent variable . Therefore, if necessary, we need to convert the tensor into scalar by weighted summation of all tensor elements , for instance , hypothesis y By independent variable x Come by calculation ,w Is and y Isomorphic tensors , be y.backward(w) The meaning is : To calculate l = torch.sum(y * w), be l It's a scalar , Then seek l For arguments x The derivative of .
This is not a good input formula , To be continued ...
边栏推荐
- Crawler (17) - Interview (2) | crawler interview question bank
- C # Development -- pit encountered in JS intermodulation
- UWA问答精选
- IP network active evaluation system -- x-vision
- OpenGL job - texture
- Record problems fgui tween animation will be inexplicably killed
- What if the win11u disk does not display? Solution to failure of win11 plug-in USB flash disk
- Use blocconsumer to build responsive components and monitor status at the same time
- Revit secondary development - get the thickness / length / height of the beam
- 应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
猜你喜欢
php 获取图片信息的方法
谈谈制造企业如何制定敏捷的数字化转型策略
Where is the big data open source project, one-stop fully automated full life cycle operation and maintenance steward Chengying (background)?
. Net automapper use
[azure microservice service fabric] start the performance monitor in the SF node and set the method of capturing the process
Reinforcement learning - learning notes 9 | multi step TD target
What if the win11u disk does not display? Solution to failure of win11 plug-in USB flash disk
【Azure微服务 Service Fabric 】如何转移Service Fabric集群中的种子节点(Seed Node)
PKPM 2020软件安装包下载及安装教程
ByteDance Android interview, summary of knowledge points + analysis of interview questions
随机推荐
Typeorm automatically generates entity classes
Two methods of calling WCF service by C #
OpenGL job coordinate system
Implementation method of data platform landing
Px4 autonomous flight
[开源] .Net ORM 访问 Firebird 数据库
Blender exchange group, welcome to the water group ~
Jerry's manual matching method [chapter]
Embedded development: how to choose the right RTOS for the project?
Record layoutrebuild Forcerebuildlayoutimmediate does not take effect
The strongest installation of the twin tower model, Google is playing "antique" again?
Leetcode SQL first day
How to turn on win11 game mode? How to turn on game mode in win11
Node:504 error reporting
[azure microservice service fabric] how to transfer seed nodes in the service fabric cluster
OpeGL personal notes - lights
Remove the default background color of chrome input input box
UWA Q & a collection
Tcp/ip protocol stack
MIT6.S081-Lab9 FS [2021Fall]