黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

機(jī)器學(xué)習(xí)+++++一看就懂的梯度下降法 python實(shí)現(xiàn)

系統(tǒng) 2267 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  數(shù)值法
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)
計(jì)算梯度是為了下降
t0=grad1(x0,y0,z0)
print(t0,f0)
# 第一次迭代:根據(jù)初始梯度計(jì)算迭代點(diǎn)坐標(biāo),并求函數(shù)值
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)
# 第二次迭代:根據(jù)第一次的坐標(biāo),計(jì)算迭代點(diǎn)做表,并求函數(shù)值
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次之后,求出函數(shù)值序列的最小值,就是最優(yōu)值,最優(yōu)值所使用的坐標(biāo)就是最優(yōu)坐標(biāo)。
# 值得一提的是:1.理論上梯度下降法無(wú)法保證絕對(duì)最優(yōu),只能保證局部最優(yōu);
#              2.要適度設(shè)置學(xué)習(xí)速率,若學(xué)習(xí)速率過(guò)大,可能導(dǎo)致無(wú)法收斂的結(jié)局。但是學(xué)習(xí)速率過(guò)小運(yùn)算速度會(huì)非誠(chéng)的慢。
#              3.如果是求最大值,可以通過(guò)加一個(gè)負(fù)號(hào)把它變成求最小值問(wèn)題。得到最優(yōu)解后,再求反即是最優(yōu)解。





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

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論