人工智能实战2019_第二次作业_蔺立萱
||||
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
|项目|内容
|课程链接| 人工智能实战 2019(北京航空航天大学)
|第二次作业要求|第二次作业 - 双变量的反向传播
|我的课程目标|熟练掌握python语言,神经网络相关应用,实操项目
|本次作业的帮助|根据编程双变量的反向传播掌握神经网络的基础知识
|我的github账户|linlixuan
1、题目
- x=2w+3b
- y=2b+1
- z = x*y
- 完成双变量的反向传播代码并给出相应的结果和误差
2、双变量的方向传播代码
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 18 11:52:59 2019
@author: Jam
"""
import numpy as np
w = 3
b = 4
z = 162
target = 150
eps = 1e-5
cnt = 0
def double_parameters(b,w):
x = 3*b + 2*w
y = 2*b + 1
z = x*y
delta_b_0 = (3*y + 2*x)
delta_w_0 = (2*y)
return(x,y,z,delta_b_0,delta_w_0)
while (np.abs(z-target)>eps):
cnt+=1
x,y,z,delta_b_0,delta_w_0 = double_parameters(b,w)
print("cnt=%d, w=%f, b=%f, z=%f" %(cnt, w, b, z))
error = z - target
delta_b = error/(2*delta_b_0)
delta_w = error/(2*delta_w_0)
b = b - delta_b
w = w - delta_w
print("error=%.9f, delta_b=%f, delta_w=%f,e" %(error, delta_b, delta_w));
print('\n')
print('FINAL_cnt=%d,b=%f, w=%f,error=%.9f' %(cnt, b, w, error))
3、运行结果
cnt=1, w=3.000000, b=4.000000, z=162.000000
error=12.000000000, delta_b=0.095238, delta_w=0.333333
cnt=2, w=2.666667, b=3.904762, z=150.181406
error=0.181405896, delta_b=0.001499, delta_w=0.005148
cnt=3, w=2.661519, b=3.903263, z=150.000044
error=0.000044335, delta_b=0.000000, delta_w=0.000001
cnt=4, w=2.661517, b=3.903263, z=150.000000
error=0.000000000, delta_b=0.000000, delta_w=0.000000
FINAL_cnt=4,b=3.903263, w=2.661517,error=0.000000000
4、思考与比较
- 实时的反馈和迭代能够更快的达到所期望的目标值
- 对半的将误差平分在变量头上是一种较为鲁莽的做法,每个变量参与不同的权重,以此不断更新权重效率才会更高
posted on 2019-03-18 15:41 linlixuan00 阅读(120) 评论(0) 编辑 收藏 举报