日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

機器學習+++++一看就懂的梯度下降法 python實現

系統 1956 0
            
              # encoding:utf-8
 
"""
function : f(x,y,z) = (x+y)z
"""

def fun(x,y,z):
    return (x+y)*z
# first method   解析法
def grad1(x,y,z):
    dx = z
    dy = z
    dz = (x+y)
    return (dx,dy,dz)
# second method  數值法
def grad2(x,y,z,epi): 
    # dx
    fx1 = (x+epi+y)*z
    fx2 = (x-epi+y)*z
    dx = (fx1-fx2)/(2*epi)
    # dy
    fy1 = (x+y+epi)*z
    fy2 = (x+y-epi)*z
    dy = (fy1-fy2)/(2*epi)
    # dz
    fz1 = (x+y)*(z+epi)
    fz2 = (x+y)*(z-epi)
    dz = (fz1-fz2)/(2*epi)
    return (dx,dy,dz)
# third method 反向傳播法
def grad3(x,y,z): 
    # forward
    p = x+y;
    f = p*z;    
    # backward
    dp = z
    dz = p
    dx = 1 * dp
    dy = 1 * dp
    return (dx,dy,dz)
 
print ("
              
                : %.2f %.2f %.2f"%(grad1(1,2,3)))       
print ("
                
                  : %.2f %.2f %.2f"%(grad2(1,2,3,1e-5)))
print ("
                  
                    : %.2f %.2f %.2f"%(grad3(1,2,3)))



# 初始值
x0=1;y0=2;z0=3;f0=fun(x0,y0,z0)
計算梯度是為了下降
t0=grad1(x0,y0,z0)
print(t0,f0)
# 第一次迭代:根據初始梯度計算迭代點坐標,并求函數值
x1=x0-t0[0];y1=y0-t0[1];z1=z0-t0[2];f1=fun(x1,y1,z1)
t1=grad1(x1,y1,z1)
print(t1,f1)
# 第二次迭代:根據第一次的坐標,計算迭代點做表,并求函數值
x2=x1-t1[0];y2=y1-t1[1];z2=z1-t1[2];f2=fun(x2,y2,z2)
t2=grad1(x2,y2,z2)
print(t2,f2)
# 以此類推,,,,迭代n次之后,求出函數值序列的最小值,就是最優值,最優值所使用的坐標就是最優坐標。
# 值得一提的是:1.理論上梯度下降法無法保證絕對最優,只能保證局部最優;
#              2.要適度設置學習速率,若學習速率過大,可能導致無法收斂的結局。但是學習速率過小運算速度會非誠的慢。
#              3.如果是求最大值,可以通過加一個負號把它變成求最小值問題。得到最優解后,再求反即是最優解。





def fun1(x,y):
    return x**2+y**2
print('--'*10)


def grad4(x,y):
    dx=2*x
    dy=2*y
    return(dx,dy)


def die_one(x,y,apha):
    #梯度
    t=grad4(x,y)
    # 下降
    x=x-apha*t[0];y=y-apha*t[1]
    return fun1(x,y),(x,y)

算法
def die_(x,y,num,apha):
    li=[]
    for i in range(num):
        resu=die_one(x,y,apha)
        li+=[resu[0]]
        x,y=resu[1] 
    return round(min(li),2),resu[1]
r=die_(100,100,10000,0.01)
print(r[0],r[1])
                  
                
              
            
          

?https://blog.csdn.net/li_wen01/article/details/73222657

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 杭锦后旗| 客服| 通山县| 天峨县| 运城市| 监利县| 玛多县| 清涧县| 枝江市| 宜都市| 吴江市| 鄂尔多斯市| 安福县| 乐至县| 虹口区| 凤冈县| 文登市| 盐津县| 中阳县| 班戈县| 安平县| 安宁市| 保亭| 枞阳县| 成武县| 钟祥市| 渝中区| 汽车| 五峰| 临江市| 兴山县| 政和县| 高邮市| 瑞昌市| 绥中县| 建平县| 永川市| 辉南县| 富顺县| 视频| 义马市|