項目 內容 這個作業屬于哪個課程 人工智能實戰2019 這個作業的要求在哪 作業要求 我在這個課程的目標是 了解人工智能相關知識,提高編程能力 這個作業在哪個具體方面幫助我實現目標 練習基本python編程 作業正文 (http://www.rzrgm.cn/-myq123/p/10550225.html) 一 . 雙變量的反向傳播代碼及結果 import math
w = 3.0
b = 4.0
i=0
x = 2w+3b
y = 2b+1
z = xy
dz = abs(z-150)
adz = abs(z-150)
zw = 2y
zb = 3y+2x
while(adz>=10**(-5)):
i=i+1
w = w-zw/(zw+zb)dz/zw
b = b-zb/(zw+zb)dz/zb
x = 2w+3b
y = 2b+1
z = xy
dz = abs(z-150)
adz = abs(z-150)
zw = 2y
zb = 3y+2x
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 = 2w+3b
y = 2b+1
z = xy
dz = abs(z-150)
adz = abs(z-150)
zw = 2y
zb = 3y+2x
while(adz>=10**(-5)):
i=i+1
w = w-dz/2/zw
b = b-dz/2/zb
x = 2w+3b
y = 2b+1
z = xy
dz = abs(z-150)
adz = abs(z-150)
zw = 2y
zb = 3y+2x
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,收斂得更好。
浙公網安備 33010602011771號