项目 | 内容 |
---|---|
课程 | 人工智能实战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