TensorFlow實踐 線性回歸

2021-09-05 12:21:09 字數 3429 閱讀 2294

通過生**工資料集合,基於tensorflow實現線性回歸

利用隨機數在直線y=2.321*x+1.564的基礎上,加上一定的噪音,產生在(-1,1)範圍的資料。

x,y是兩個佔位符,用於儲存訓練過程中的資料,w,b是兩個變數,訓練就是不斷地改變這兩個值,以使模型達到最好。

train_epochs和learning_rate是兩個超引數,分別表示訓練的總次數,這兩個引數可以根據訓練的效果來改變。

loss_function是損失函式,程式的目標就是讓這個損失函式的值最小,這裡用的是模型的輸出值與輸入的資料y之間的差的平方的平均數來表示,optimizer是優化器,這裡採用的是梯度下降演算法。

sess = tf.session(

)init = tf.global_variables_initializer(

)sess.run(init)

for epoch in

range

(train_epochs)

:for xi,yi in

zip(x_data,y_data)

: _,loss = sess.run(

[optimizer,loss_function]

,feed_dict=

)

訓練模型時,先啟動會話,然後初始化變數,之後就是正式的去訓練模型,即在每個輪次中,通過feed_dict函式,將資料餵給模型,模型就可以根據這些資料來訓練。

import matplotlib.pyplot as plt

import numpy as np

import tensorflow as tf

np.random.seed(5)

x_data = np.linspace(-1

,1,100

)#2.321*x+1.564

w0 =

2.321

b0 =

1.564

y_data = w0 * x_data + b0 + np.random.randn(

*x_data.shape)

*0.4

#影象顯示

plt.figure(

"image1"

)plt.rcparams[

'figure.figsize']=

(10,6

)plt.scatter(x_data,y_data)

plt.plot(x_data,w0* x_data + b0,

'red'

)#構建模型

x = tf.placeholder(

"float"

,name =

"x")

y = tf.placeholder(

"float"

,name =

"y")

defmodel

(x,w,b)

:return tf.multiply(x,w)

+bw = tf.variable(

1.0,name =

"w0"

)b = tf.variable(

0.0,name =

"b0"

)pred = model(x,w,b)

train_epochs =

10learning_rate =

0.05

loss_function = tf.reduce_mean(tf.square(y-pred)

)optimizer = tf.train.gradientdescentoptimizer(learning_rate)

.minimize(loss_function)

sess = tf.session(

)init = tf.global_variables_initializer(

)plt.figure(

"image2"

)sess.run(init)

for epoch in

range

(train_epochs)

:for xi,yi in

zip(x_data,y_data)

: _,loss = sess.run(

[optimizer,loss_function]

,feed_dict=

) w_temp = w.

eval

(session = sess)

b_temp = b.

eval

(session = sess)

plt.plot(x_data,w_temp*x_data + b_temp)

print

("原直線:"

,"w:"

,w0,

" b:"

,b0)

print

("訓練結果:"

,"w:"

,sess.run(w)

," b:"

,sess.run(b)

)

tensorflow實踐 02 線性回歸

為了進一步熟悉tensorflow的基本操作,下面通過乙個線性回歸的小例子簡單展示一下tensorflow的基本使用流程。由於是簡單的線性回歸,我們自己生成乙份隨即資料作為演示就可以了。def createdata w,b x np.linspace 1,1,100 y w x b np.rando...

TensorFlow實踐 擬合線性方程

假設有一組資料集,其中x與y的對應關係為 y 3x 0.5。我們想讓神經網路學習這些樣本,並從中找到這個規律,通俗來說就是讓神經網路學習到方程中的引數3和0.5 首先用numpy生成1個含有100個資料的隨機序列x,然後寫出y與x的對應關係。import tensorflow as tf impor...

TensorFlow 實現Softmax 回歸模型

importtensorflowastf importnumpyasnp importtensorflow.examples.tutorials.mnist.input dataasinput data mnist input data.read data sets mnist data one h...