項目 | 內容 |
---|---|
課程 | 人工智能實戰2019 |
做業要求 | 做業 |
我在這個課程的目標是 | 瞭解人工智能理論,提高coding能力 |
這個做業在哪一個具體方面幫助我實現目標 | 經過學習神經網絡反向傳播算法更好地鞏固本身的AI基礎 |
\[ \frac{\partial{z}}{\partial{b}}=\frac{\partial{z}}{\partial{x}} \cdot \frac{\partial{x}}{\partial{b}}+\frac{\partial{z}}{\partial{y}}\cdot\frac{\partial{y}}{\partial{b}}=y \cdot 3+x \cdot 2=3y+2x \]\[ \frac{\partial{z}}{\partial{w}}=\frac{\partial{z}}{\partial{x}} \cdot \frac{\partial{x}}{\partial{w}}+\frac{\partial{z}}{\partial{y}}\cdot\frac{\partial{y}}{\partial{w}}=y \cdot 2+x \cdot 0 = 2y \]
因此,在每次迭代中,要從新計算下面兩個值:
\[ \Delta b=\frac{\Delta z}{3y+2x} \]\[ \Delta w=\frac{\Delta z}{2y} \]
可是因爲$
\Delta b\(和\)\Delta\omega\(都對\)\Delta z$形成一半的影響,所以咱們這裏的公式應該改爲
\[ \Delta b=\frac{\Delta z /2}{3y+2x} \]\[ \Delta w=\frac{\Delta z /2}{2y} \]git
而後每次更新\(b\)和\(\omega,z\)的值,循環迭代,直到\(z -150\leq 10^-5\)github
# -*-coding:utf-8-*- from numpy import * target = 150.0 w = 3.0 b = 4.0 z = 162 min = 1e-5; print(z) iter_count = 0 while ((abs(150 - z)) > min): iter_count +=1 x = 2 * w + 3 * b y = 2 * b + 1 z = x * y delta_b = ((z - 150) / ((2 * x + 3 * y)*2)) delta_w = ((z - 150) / ((2 * y)*2)) w = w - delta_w b = b - delta_b print("loop: %d, w = %.8f, b = %.8f, z = %.8f, error = %.8f"%(iter_count,w,b,z,abs(150-z))); print("final result:loop = %d, w = %.8f, b = %.8f,z = %.8f,error = %.8f"%(iter_count,w,b,z,abs(z-150)));
loop: 1, w = 2.66666667, b = 3.90476190, z = 162.00000000, error = 12.00000000 loop: 2, w = 2.66151866, b = 3.90326327, z = 150.18140590, error = 0.18140590 loop: 3, w = 2.66151740, b = 3.90326291, z = 150.00004434, error = 0.00004434 loop: 4, w = 2.66151740, b = 3.90326291, z = 150.00000000, error = 0.00000000 final result:loop = 4, w = 2.66151740, b = 3.90326291,z = 150.00000000,error = 0.00000000
delta_b = ((z - 150) / ((63)*2)) delta_w = ((z - 150) / ((18)*2))
loop: 1, w = 2.66666667, b = 3.90476190, z = 162.00000000, error = 12.00000000 loop: 2, w = 2.66162761, b = 3.90332218, z = 150.18140590, error = 0.18140590 loop: 3, w = 2.66147411, b = 3.90327832, z = 150.00552614, error = 0.00552614 loop: 4, w = 2.66146940, b = 3.90327697, z = 150.00016964, error = 0.00016964 loop: 5, w = 2.66146925, b = 3.90327693, z = 150.00000521, error = 0.00000521 final result:loop = 5, w = 2.66146925, b = 3.90327693,z = 150.00000521,error = 0.00000521