本篇文章給大家分享的是有關(guān)如何用tensorflow做線性回歸,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)一直在為企業(yè)提供服務(wù),多年的磨煉,使我們在創(chuàng)意設(shè)計(jì),全網(wǎng)整合營銷推廣到技術(shù)研發(fā)擁有了開發(fā)經(jīng)驗(yàn)。我們擅長傾聽企業(yè)需求,挖掘用戶對(duì)產(chǎn)品需求服務(wù)價(jià)值,為企業(yè)制作有用的創(chuàng)意設(shè)計(jì)體驗(yàn)。核心團(tuán)隊(duì)擁有超過十載以上行業(yè)經(jīng)驗(yàn),涵蓋創(chuàng)意,策化,開發(fā)等專業(yè)領(lǐng)域,公司涉及領(lǐng)域有基礎(chǔ)互聯(lián)網(wǎng)服務(wù)香港機(jī)房服務(wù)器托管、重慶App定制開發(fā)、手機(jī)移動(dòng)建站、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)整合營銷。
01
—
Tensorflow做線性回歸
前面實(shí)現(xiàn)過最小二乘法的線性回歸算法,梯度下降求解過程,詳見文章:
機(jī)器學(xué)習(xí)之線性回歸:算法兌現(xiàn)為python代碼
那么,借助tensorflow如何實(shí)現(xiàn)最小二乘法的線性回歸呢?基本的思路,首先生成擬合的數(shù)據(jù)集,然后構(gòu)建線性回歸的Graph,最后在Session中迭代train器,得到擬合的參數(shù)w和b,畫出擬合曲線。
1.1 生成擬合的數(shù)據(jù)集,數(shù)據(jù)集只含有一個(gè)特征,注意誤差項(xiàng)需要滿足高斯分布,其分布的代碼如下,首先導(dǎo)入3個(gè)庫,
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
#數(shù)據(jù)點(diǎn)100個(gè)
num_points = 100
vectors_set = []
for i in range(num_points):
x1 = np.random.normal(0.,0.55)
y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0,0.03)
vectors_set.append([x1,y1])
#特征x
x_data = [v[0] for v in vectors_set]
#標(biāo)簽值y
y_data = [v[1] for v in vectors_set]
plt.scatter(x_data,y_data,c='b')
plt.show()
產(chǎn)生的數(shù)據(jù)分布如下所示:
1.2 構(gòu)建線性回歸的Graph
w = tf.Variable(tf.random_uniform([1],-1.,1.),name='myw')
b = tf.Variable(tf.zeros([1]),name='myb')
#經(jīng)過計(jì)算得出預(yù)估值
y = w * x_data + b
#以預(yù)估值y和實(shí)際值y_data之間的均方差作為損失
loss = tf.reduce_mean(tf.square(y-y_data,name='mysquare'), name='myloss')
#采用梯度下降法來優(yōu)化參數(shù)
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss,name='mytrain')
1.3 在Session中運(yùn)行構(gòu)建好的Graph
#global_variables_initializer初始化Variable等變量
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#迭代20次train
for step in range(20):
sess.run(train)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#寫入磁盤,提供tensorboard在瀏覽器中展示用
writer = tf.summary.FileWriter("./mytmp",sess.graph)
打印下w和b,損失值的變化情況,可以看到損失值從0.24降到0.0008.
1.4繪制擬合曲線
plt.scatter(x_data,y_data,c='b')
plt.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()
02
—
Tensorboard展示Graph
關(guān)于如何在tensorboard中展示構(gòu)建好的Graph,請參考文章,不再贅述,直接分析tensorflow繪制的graph.
TensorFlow筆記|Get Started
得到的Graph界面如下所示:
Main Graph視圖放大版,數(shù)據(jù)從底部是如何經(jīng)過Operators,流動(dòng)到頂部的,大家可以順一下。
以上就是如何用tensorflow做線性回歸,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。