当前位置:网站首页>"Hands on learning in depth" Chapter 2 - preparatory knowledge_ 2.5 automatic differentiation_ Learning thinking and exercise answers
"Hands on learning in depth" Chapter 2 - preparatory knowledge_ 2.5 automatic differentiation_ Learning thinking and exercise answers
2022-07-06 02:31:00 【coder_ sure】
List of articles
2.5. Automatic differentiation
author github link : github link
practice
- Prove a matrix A \mathbf{A} A The transpose of is A \mathbf{A} A, namely ( A ⊤ ) ⊤ = A (\mathbf{A}^\top)^\top = \mathbf{A} (A⊤)⊤=A.
- Two matrices are given A \mathbf{A} A and B \mathbf{B} B, prove “ They are transposed and ” be equal to “ They are transposed with ”, namely A ⊤ + B ⊤ = ( A + B ) ⊤ \mathbf{A}^\top + \mathbf{B}^\top = (\mathbf{A} + \mathbf{B})^\top A⊤+B⊤=(A+B)⊤.
- Given an arbitrary square matrix A \mathbf{A} A, A + A ⊤ \mathbf{A} + \mathbf{A}^\top A+A⊤ Is it always symmetrical ? Why? ?
- We define shapes in this section ( 2 , 3 , 4 ) (2,3,4) (2,3,4) Tensor
X.len(X)What is the output of ? - For tensors of arbitrary shape
X,len(X)Whether it always corresponds toXThe length of a particular axis ? What is this axis ? - function
A/A.sum(axis=1), See what happens . Can you analyze the reason ? - Consider a with a shape ( 2 , 3 , 4 ) (2,3,4) (2,3,4) Tensor , In the shaft 0、1、2 What shape is the summation output on ?
- by
linalg.normFunction provides 3 Tensors of one or more axes , And observe its output . For tensors of any shape, what does this function calculate ?
Practice reference answers
- Why is it more expensive to calculate the second derivative than the first derivative ?
Because the second derivative is based on the calculation of the first derivative , Therefore, the cost of calculating the second derivative must be greater than that of the first derivative - After running the back propagation function , Run it again now , See what happens .
The complains , about Pytorch Come on , The forward process establishes a calculation diagram , Release after back propagation . Because the intermediate result of the calculation graph has been released , So the second run of back propagation will make an error . At this moment in backward Add parameters to the function retain_graph=True, You can run back propagation twice . - In the case of control flow , We calculated
dAboutaThe derivative of , If we put variablesaChange to random vector or matrix , What's going to happen ?
A runtime error has occurred , stay Pytorch in , Don't let the tensor derive from the tensor , Only scalar derivatives of tensors are allowed . If you want to call on a non scalar backward(), You need to pass in a gradient Parameters . - Redesign an example of finding the gradient of control flow , Run and analyze the results .
# When a The norm of is greater than 10 when , Gradient for all elements is 1 Vector ; When a The gradient of is not greater than 10 when , Gradient for all elements is 2 Vector .
def f(a):
if a.norm() > 10:
b = a
else:
b = 2 * a
return b.sum()
a = torch.tensor([1.0, 2.0, 3.0, 4.0, 5.0], requires_grad=True)
d = f(a)
d.backward()
- send f ( x ) = sin ( x ) f(x)=\sin(x) f(x)=sin(x), draw f ( x ) f(x) f(x) and d f ( x ) d x \frac{df(x)}{dx} dxdf(x) Image , The latter does not use f ′ ( x ) = cos ( x ) f'(x)=\cos(x) f′(x)=cos(x).
The latter does not use f ′ ( x ) = cos ( x ) f'(x)=\cos(x) f′(x)=cos(x), The original intention of this problem is to save all the derivative values obtained from the derivation of the function , According to these saved df value , Draw f ′ ( x ) f'(x) f′(x)
# Import the corresponding library
import numpy as np
import torch
import matplotlib.pyplot as plt
# Make some definitions
x = np.arange(-5, 5, 0.02)# Define the argument in [5,5] Between , Every number interval 0.02
f = np.sin(x)
df = []
for i in x:
# Yes x Find the derivative for every value of
v = torch.tensor(i,requires_grad=True)
y = torch.sin(v)
y.backward()
df.append(v.grad)
# The drawing part
# Create plots with pre-defined labels.
fig, ax = plt.subplots()
ax.plot(x, f, 'k', label='f(x)')
ax.plot(x, df, 'k*', label='df(x)')
legend = ax.legend(loc='upper left', shadow=True, fontsize='x-large')
# Put a nicer background color on the legend.
legend.get_frame().set_facecolor('C0')
plt.show()

Reference material
边栏推荐
- 2022 China eye Expo, Shandong vision prevention and control exhibition, myopia, China myopia correction Exhibition
- Zero basic self-study STM32 wildfire review of GPIO use absolute address to operate GPIO
- 论文笔记: 图神经网络 GAT
- Number conclusion LC skimming review - 1
- 米家、涂鸦、Hilink、智汀等生态哪家强?5大主流智能品牌分析
- [Wu Enda machine learning] week5 programming assignment EX4 - neural network learning
- Advanced technology management - what is the physical, mental and mental strength of managers
- PAT甲级 1033 To Fill or Not to Fill
- Paper notes: graph neural network gat
- Keyword static
猜你喜欢

爬虫(9) - Scrapy框架(1) | Scrapy 异步网络爬虫框架

一位博士在华为的22年

The intelligent material transmission system of the 6th National Games of the Blue Bridge Cup

从顶会论文看2022年推荐系统序列建模的趋势

数据工程系列精讲(第四讲): Data-centric AI 之样本工程

3D drawing ()

零基础自学STM32-野火——GPIO复习篇——使用绝对地址操作GPIO
![[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 15](/img/72/0fe9cb032339d5f1ccf6f6c24edc57.jpg)
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 15
![[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 12](/img/b1/926d9b3d7ce9c5104f3e81974eef07.jpg)
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 12

Use the list component to realize the drop-down list and address list
随机推荐
Easy to use js script
[community personas] exclusive interview with Ma Longwei: the wheel is not easy to use, so make it yourself!
Minecraft 1.18.1、1.18.2模组开发 22.狙击枪(Sniper Rifle)
[robot library] awesome robots Libraries
2022.02.13
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Zero basic self-study STM32 wildfire review of GPIO use absolute address to operate GPIO
Y a - t - il des cas où sqlcdc surveille plusieurs tables et les associe à une autre? Tout fonctionne dans MySQL
构建库函数的雏形——参照野火的手册
VIM usage guide
Pat grade a 1033 to fill or not to fill
Use the list component to realize the drop-down list and address list
Initial understanding of pointer variables
General process of machine learning training and parameter optimization (discussion)
模板_快速排序_双指针
Shell script updates stored procedure to database
Bigder: I felt good about the 34/100 interview, but I didn't receive the admission
Shell脚本更新存储过程到数据库
The intelligent material transmission system of the 6th National Games of the Blue Bridge Cup
[coppeliasim] 6-DOF path planning