加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

梯度下降法的一个程序例子

(2019-03-21 07:05:00)
标签:

python

分类: 图像处理
    在神经网络学习中,梯度下降法是一个绕不开的算法,关于梯度下降法的具体内容就不详细叙述了,网上有这方面的资料,下面只给一个python程序的例子实现一个二元函数求最小值。

'''
作者:张新平
日期:2019-03-21
描述:本程序代码是演示梯度下降法,其中getValue是取得一个二元函数的函数值,而getDValeu是获得二元函数的导数值
'''
def getValue(x,y):#返回二元函数的函数值
   return 3*x*x+3*y*y+2*x*y-8*x-8*y+9
def getDValeu(x,y):#返回二元函数的导数值
   return 6*x+2*y-8,2*x+6*y-8
if __name__=="__main__":
  #设置初始值
   x=-188.0
   y=-140.0
   #设置学习率
    learn=0.05
    i=1
   while True:
   x1=x
   y1=y
   value = getValue(x, y)
   dx,dy = getDValeu(x, y)
   print(i, 'x=', x, ',y=', y, 'z=', value)
  x = x - learn * dx#更新x值
     y = y - learn * dy#更新x值
     i+=1
     if (x-x1)**2+(y-y1)**2<0.1**15:#如果前后两次的迭代值的范数非常小,则终止循环
         break

图像如下所示:

梯度下降法的一个程序例子


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有