人工智能实战2019---第二次作业---毛亚奇

项目 内容
这个作业属于哪个课程 人工智能实战2019
这个作业的要求在哪 作业要求
我在这个课程的目标是 了解人工智能相关知识,提高编程能力
这个作业在哪个具体方面帮助我实现目标 练习基本python编程
作业正文 https://www.cnblogs.com/-myq123/p/10550225.html

一 . 双变量的反向传播代码及结果

import math
w = 3.0
b = 4.0
i=0
x = 2*w+3*b
y = 2*b+1
z = x*y
dz = abs(z-150)
adz = abs(z-150)
zw = 2*y
zb = 3*y+2*x
while(adz>=10**(-5)):
    i=i+1
    w = w-zw/(zw+zb)*dz/zw
    b = b-zb/(zw+zb)*dz/zb
    x = 2*w+3*b
    y = 2*b+1
    z = x*y
    dz = abs(z-150)
    adz = abs(z-150)
    zw = 2*y
    zb = 3*y+2*x
    print("迭代次数=%d,w=%.6f,b=%.6f,z=%.6f,dz=%.6f"%(i,w,b,z,dz))
    if(i>10):
        break
runfile('C:/Users/admin/.spyder-py3/temp.py', wdir='C:/Users/admin/.spyder-py3')
迭代次数=1,w=2.851852,b=3.851852,z=150.219479,dz=0.219479
迭代次数=2,w=2.849039,b=3.849039,z=150.000079,dz=0.000079
迭代次数=3,w=2.849038,b=3.849038,z=150.000000,dz=0.000000
import math
w = 3.0
b = 4.0
i=0
x = 2*w+3*b
y = 2*b+1
z = x*y
dz = abs(z-150)
adz = abs(z-150)
zw = 2*y
zb = 3*y+2*x
while(adz>=10**(-5)):
    i=i+1
    w = w-dz/2/zw
    b = b-dz/2/zb
    x = 2*w+3*b
    y = 2*b+1
    z = x*y
    dz = abs(z-150)
    adz = abs(z-150)
    zw = 2*y
    zb = 3*y+2*x
    print("迭代次数=%d,w=%.6f,b=%.6f,z=%.6f,dz=%.6f"%(i,w,b,z,dz))
    if(i>10):
        break
runfile('C:/users/admin/.spyder-py3/temp.py', wdir='C:/users/admin/.spyder-py3')
迭代次数=1,w=2.666667,b=3.904762,z=150.181406,dz=0.181406
迭代次数=2,w=2.661519,b=3.903263,z=150.000044,dz=0.000044
迭代次数=3,w=2.661517,b=3.903263,z=150.000000,dz=0.000000

二 . 自己的思考
上面给了两种收敛方法,可以看出来第二种会收敛得好一点,当目标值为100时,第一种方法需要四步,第二种只需要三步。事实上,似乎有一种更好的办法,令 w = w-dz/(zb+zw)zb/zw,b = b-dz/(zb+zw)zw/zb,收敛得更好。

猜你喜欢

转载自www.cnblogs.com/-myq123/p/10550225.html