#安装什么就直接在Tf2.0安装
import tensorflow as tf
import pandas as pd
import numpy as np
#保存样本的列表
data=[]
# 循环采集100个点
for i in range(100):
# 随即输入x -10<x<10
x= np.random.uniform(-10., 10.)
# 采用高斯噪声
eps= np.random.normal(0.,0.1)
# 模型输出
y=1.477*x+0.089+eps
#保存样本点
data.append([x,y])
# 转存为2维数组
data=np.array(data)
def mse(b,w,points):
totalError=0
for i in range(0,len(points)):
x=points[i,0]
y=points[i,1]
totalError+=(y-(w*x+b))**2
return totalError/float(len(points))
def step_gradient(b_current,w_current,points,lr):
b_gradient=0
W_gradient=0
M=float(len(points))
for i in range(0,len(points)):
x= points[i,0]
y=points[i,1]
b_gradient+=(2/M)*((w_current*x+b_current)-y)
W_gradient+=(2/M)*((w_current*x+b_current)-y)
new_b=b_current-(lr*b_gradient)
new_w=w_current-(lr*W_gradient)
return [new_b,new_w]
def gradient_descent(points,starting_b,starting_w,lr,num_iterations):
b=starting_b
w=starting_w
for step in range(num_iterations):
b,w=step_gradient(b,w,np.array(points),lr)
loss=mse(b,w,points)
if step%50==0:
print(f"iteration:{step}, loss{loss}, w:{w}, b:{b}")
return [b,w]
def main():
lr = 0.01
initial_b=0
initial_w=0
num_iterations=1000
[b,w]=gradient_descent(data,initial_b,initial_w,lr,num_iterations)
loss=mse(b,w,data)
print(f'Fnal loss:{loss}, w:{w}, b:{b}')
main()