人工智能实战第二次作业_尹正超

作业二:双变量的反向传播

项目 内容
这个作业属于哪个课程 人工智能实战
这个作业的要求在哪里 第二次作业-双变量的反向传播
我在这个课程的目标是 学习算法,积累项目经验,锻炼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
>>> 
- 同样次数后更加精确

猜你喜欢

转载自www.cnblogs.com/ClementY/p/10546999.html
今日推荐