【深度学习】求解偏导数

求偏导数

假如有一个函数

f ( x ) = x 0 2 + x 1 2 f(x)=x_0^2+x_1^2 f(x)=x02+x12

这里有两个变量

  • 在计算的过程中有必要区分对哪个变量求导数

表示出来

# 将原函数定义出来
def function_2(x):
    return x[0] ** 2 + x[1] ** 2

代码表示函数还不是困难的

解决求偏导数的思路

新定义只有一个变量的函数

很多思路和方法都是用已知的方法去解决未知的问题

定义一个x1=4的函数

  • 对只有变量x0的函数用求微分

两个临时变式函数写出来

# 对0求偏导的函数的临时函数
def function_tmp0(x0): # x是变量,另一个不重要的变量已经固定好了
    return x0 ** 2 + 4 ** 2


# 对1求偏导的函数的临时函数
def function_tmp1(x1):
    return 3 ** 2 + x1 ** 2

求数值微分的函数

千万要会写,要独立的闭着眼睛都能写出来

# 定义好求数值微分的函数,函数返回的结果值应该是函数的导数值
def numerical_diff(f, x):  # f:对哪个函数求导,x,要求导的自变量是哪个,拿过来,3q
    h = 1e-4
    return (f(x + h) - f(x - h)) / 2 * h

测试

x=np.array([3,4])

# 将同一点的两个偏导数求出来
result0=numerical_diff(function_tmp0,x[0])
result1=numerical_diff(function_tmp1,x[1])

print(result0,'\n',result1)

D:\ANACONDA\envs\pytorch\python.exe C:/Users/Administrator/Desktop/DeepLearning/ch04/wgw_test.py
6.000000000003781e-08 
 7.999999999999119e-08

Process finished with exit code 0

在编码过程中的思考

代码是人写出来的

写的写的就写出来了

  • 不要怕写错
  • 不要怕写出来

最怕的就是不去写,眼高手低

  • 这样永远学不会!

matplot绘制图形

import  numpy as np
import  matplotlib.pylab as plt

x=np.arange(0,6,0.1)
y1=np.sin(x)
y2=np.cos(x)

# 开始绘制图形
plt.plot(x,y1,label='sin')
plt.plot(x,y2,label='cos',linestyle='--')
plt.title('sin & cos')
plt.xlabel('x')
plt.ylabel('y')
plt.legend() # 绘制图例

plt.show()

2022年11月29日17:07:00,亲自码了一遍,感觉好多了

你可能感兴趣的:(深度学习,深度学习,python,人工智能)