• 【深度学习】求解偏导数


    偏导数

    假如有一个函数

    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
    
    • 1
    • 2
    • 3

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

    解决求偏导数的思路

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

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

    定义一个x1=4的函数

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

    两个临时变式函数写出来

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

    求数值微分的函数

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

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

    测试

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在编码过程中的思考

    代码是人写出来的

    写的写的就写出来了

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

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

    • 这样永远学不会!

    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()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

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

  • 相关阅读:
    Java中object类对象
    Docker入门开发
    亚马逊云科技二度亮相服贸会,又带来哪些前沿应用技术?
    模拟面试
    Mybatis—动态SQL
    【企业管理战略方案设计】经营驱动与管理控制相结合
    P01914005张怡安(信息论作业)
    回顾C++
    java-php-net-python-4餐饮管理系统.计算机毕业设计程序
    程序猿成长之路之数据挖掘篇——决策树分类算法(1)——信息熵和信息增益
  • 原文地址:https://blog.csdn.net/weixin_44943389/article/details/128100820