-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2_1.py
96 lines (82 loc) · 2.27 KB
/
2_1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import numpy as np
def target_function(w,b):
x=2*w+3*b
y=2*b+1
z=x*y
return x,y,z
def single_variable(w,b,t):
print("\nsingle variable: b ------")
error=1e-5
while(True):
x,y,z=target_function(w,b)
delta_z=z-t
print("w=%f,b=%f,z=%f,delta_z=%f"%(w,b,z,delta_z))
if abs(delta_z)<error:
break
delta_b=delta_z/63
print("delta_b=%f"%delta_b)
b=b-delta_b
print("done!")
print("final b=%f"%b)
def single_variable_new(w,b,t):
print("\nsingle variable new: b ------")
error=1e-5
while(True):
x,y,z=target_function(w,b)
delta_z=z-t
print("w=%f,b=%f,z=%f,delta_z=%f"%(w,b,z,delta_z))
if abs(delta_z)<error:
break
factor_b=2*x+3*y
delta_b=delta_z/factor_b
print("factor_b=%f,delta_b=%f"%(factor_b,delta_b))
b=b-delta_b
print("done!")
print("final b=%f"%b)
def double_variable(w,b,t):
print("\ndouble variable: w,b ------")
error=1e-5
while(True):
x,y,z=target_function(w,b)
delta_z=z-t
print("w=%f,b=%f,z=%f,delta_z=%f"%(w,b,z,delta_z))
if abs(delta_z)<error:
break
delta_w=delta_z/18/2
delta_b=delta_z/63/2
print("delta_w=%f,delta_b=%f"%(delta_w,delta_b))
b=b-delta_b
w=w-delta_w
print("done!")
print("final w=%f"%w)
print("final b=%f"%b)
def double_variable_new(w,b,t):
print("\ndouble variable new: w,b ------")
error=1e-5
while(True):
x,y,z=target_function(w,b)
delta_z=z-t
print("w=%f,b=%f,z=%f,delta_z=%f"%(w,b,z,delta_z))
if abs(delta_z)<error:
break
factor_w,factor_b=calculate_wb_factor(x,y)
delta_w=delta_z/factor_w/2
delta_b=delta_z/factor_b/2
print("factor_w=%f,factor_b=%f,delta_w=%f,delta_b=%f"%(factor_w,factor_b,delta_w,delta_b))
b=b-delta_b
w=w-delta_w
print("done!")
print("final w=%f"%w)
print("final b=%f"%b)
def calculate_wb_factor(x,y):
factor_b=2*x+3*y
factor_w=2*y
return factor_w,factor_b
if __name__=='__main__':
w=3
b=4
t=150
single_variable(w,b,t)
single_variable_new(w,b,t)
double_variable(w,b,t)
double_variable_new(w,b,t)