# -*- coding: utf-8 -*-"""Spyder Editor This is a temporary script file.tensor flow 之線性回歸模式2019-oct-5""" import tensorflow as tfimport numpy as npimpo ...
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
tensor flow 之線性回歸模式
2019-oct-5
"""
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
SIZE=100
np.random.seed(100)#np隨機種子
tf.set_random_seed(100)#tf隨機種子
#1、構建數據
x=np.linspace(0,2,SIZE) #等差數列
noise_x=np.random.normal(loc=0.0,scale=1.0,size=SIZE) #‘隨機正太分佈 增加噪音
x=x+noise_x
y=8*x+8 #用於填充Y數組
noise_y=np.random.normal(loc=0.0,scale=1.1,size=SIZE)
y=y+noise_y
#2、設置為矩陣的模型
x.shape=(-1,1)
y.shape=(-1,1)
#3、構建一個模型 y=w*x+b 設置tf變數 用於訓煉
w=tf.Variable(initial_value=tf.random_uniform(shape=[1],minval=-1.0,maxval=1.0,name='w'))
b=tf.Variable(initial_value=tf.zeros(shape=[1],name='b'))
#4、得到預測值
y_hat=w*x+b
#5、構建損失函數 loss
loss=tf.reduce_mean(tf.square(y_hat-y),name='loss') #損失函數 loss=聚合平均值(差的平方)
#6、梯度下降 優化損失函數 ,讓其最小
optiomizer=tf.train.GradientDescentOptimizer(learning_rate=0.05)#初始化變數 及學習
train=optiomizer.minimize(loss=loss) #求最小損失函數 loss
#執行訓練
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
run_w,run_b,run_loss=sess.run([w,b,loss])
print('w={},b={},loss={}'.format(run_w,run_b,run_loss))
for i in range(100):#訓練100次
sess.run(train)
run_w,run_b,run_loss=sess.run([w,b,loss])#取w,b,loss這三個東東的值 並列印展示
print('w={},b={},loss={}'.format(run_w,run_b,run_loss))
#畫表展示
#畫線
x_hat=np.linspace(x.min(),x.max())
print("x_hat={}".format(x_hat))
y_hat2=run_w*x_hat+run_b
plt.plot(x_hat,y_hat2)
#畫線
#畫點
plt.plot(x,y,'go') #go rs ro
#畫點
plt.show()#顯示