项目 | 内容 |
---|---|
这个作业属于哪个课程 | 人工智能实战2019 |
这个作业的要求在哪里 | 作业要求 |
我在这个课程的目标是 | 将机器学习理论与实践相结合,获得一定的项目经验,提高编程能力 |
这个作业在哪个具体方面帮助我实现目标 | 了解神经网络的反向传播机制 |
我的GitHub链接 | https://github.com/QiangLiu404 |
正文
一、双变量的反向传播代码及结果:
import numpy as np
def Linear (w,b,error,target):/* 参数是:w,b,误差是:error,目标输出是:target */
e=error
t=target
while(True):
x=2*w+3*b
y=2*b+1
z=x*y
Z=z-t
print("w=%f,b=%f,z=%f,delta_z=%f"%(w,b,z,Z))
if(abs(Z)<e):
break
deflector_B=2*x+3*y
deflector_W=2*y
deviation_b=Z/deflector_B/2
deviation_w=Z/deflector_W/2
print("deviation_b={0},deviation_w={1},deflector_B={2},deflector_W={3}".format(deviation_b,deviation_w,deflector_B,deflector_W))
b=b-deviation_b
w=w-deviation_w
print("final b={0}".format(b))
print("final w={0}".format(w))
Linear(3,4,0.001,150)
w=3.000000,b=4.000000,z=162.000000,delta_z=12.000000
deviation_b=0.09523809523809523,deviation_w=0.3333333333333333,deflector_B=63,deflector_W=18
w=2.666667,b=3.904762,z=150.181406,delta_z=0.181406
deviation_b=0.0014986324978458446,deviation_w=0.00514800514800559,deflector_B=60.523809523809526,deflector_W=17.61904761904762
w=2.661519,b=3.903263,z=150.000044,delta_z=0.000044
final b=3.903263272264059
final w=2.661518661518661
二、思考:
每次更新factor_b和factor_w可有效减少所需的迭代次数,较之单变量的反向传播,双变量的反向传播速度更快。
反向传播提供了一种行之有效的逼近方法