作业二:双变量的反向传播
这个作业属于哪个课程 |
人工智能实战 |
这个作业的要求在哪里 |
第二次作业-双变量的反向传播 |
我在这个课程的目标是 |
学习算法,积累项目经验,锻炼coding能力 |
这个作业在哪个方面帮助我实现目标 |
了解神经网络反向传播原理,代码实现 |
1.作业要求
- 根据课堂内容(线性反向传播)完成双变量的反向传播代码
- 给出相应的结果和误差
- 给出自己的比较和思考
2.代码
import math
def error(a,b):
c=0
float(c)
c=abs(a-b)
return c
z=0;x=0;y=0
zreal=150
float(x); float(y); float(z)
w=3; kone=2; ktwo=3; b=4; lone=2; ltwo=1; c=error(z,zreal)
while c>=10**(-5):
x=kone*w+ktwo*b
y=lone*b+ltwo
z=x*y
c=error(z,zreal)
print("b=%.10f"%b," w=%.10f"%w," z=%.10f"%z," zreal=%.10f"%zreal," error=%.10f"%c)
k=(z-zreal)/2
w=w-k/(y*kone); b=b-k/(y*ktwo+x*lone)
print("hello world")
3.运行结果
>>>
RESTART: C:\Users\dell\Desktop\PythonApplication1\PythonApplication1\PythonApplication1.py
b=4.0000000000 w=3.0000000000 z=162.0000000000 zreal=150.0000000000 error=12.0000000000
b=3.9047619048 w=2.6666666667 z=150.1814058957 zreal=150.0000000000 error=0.1814058957
b=3.9032632723 w=2.6615186615 z=150.0000443353 zreal=150.0000000000 error=0.0000443353
b=3.9032629058 w=2.6615174029 z=150.0000000000 zreal=150.0000000000 error=0.0000000000
hello world
>>>
4.比较和思考
- 考虑根据z对w和b的偏导数对w和b的权重进行修改,其逼近速度更快。
5.更改后代码
import math
def error(a,b):
c=0
float(c)
c=abs(a-b)
return c
z=0;x=0;y=0
zreal=150
float(x); float(y); float(z)
w=3; kone=2; ktwo=3; b=4; lone=2; ltwo=1; c=error(z,zreal)
while c>=10**(-8):
x=kone*w+ktwo*b
y=lone*b+ltwo
z=x*y
c=error(z,zreal)
print("b=%.15f"%b," w=%.15f"%w," z=%.15f"%z," zreal=%.15f"%zreal," error=%.15f"%c)
kw=(z-zreal)*(y*ktwo+x*lone)/(y*kone+y*ktwo+x*lone)
kb=(z-zreal)*(y*kone)/(y*kone+y*ktwo+x*lone)
w=w-kw/(y*kone); b=b-kb/(y*ktwo+x*lone)
print("hello world")
>>>
RESTART: C:\Users\dell\Desktop\PythonApplication1\PythonApplication1\PythonApplication1.py
b=4.000000000000000 w=3.000000000000000 z=162.000000000000000 zreal=150.000000000000000 error=12.000000000000000
b=3.957671957671958 w=2.481481481481481 z=150.098541474202818 zreal=150.000000000000000 error=0.098541474202818
b=3.957300299335828 w=2.477214308756239 z=150.000007172500773 zreal=150.000000000000000 error=0.000007172500773
b=3.957300272268726 w=2.477213998156590 z=150.000000000000085 zreal=150.000000000000000 error=0.000000000000085
hello world
>>>
- 同样次数后更加精确