使用Tesorflow實(shí)現(xiàn)線性回歸

我們用Tensorflow實(shí)現(xiàn)線性回歸(linear regression learning)算法:

首先踩娘,導(dǎo)入需要的包:

import tensorflow as tf
import numpy
import matplotlib.pyplot as plt
rng = numpy.random

設(shè)置訓(xùn)練的參數(shù):

# Parameters
learning_rate = 0.01
training_epochs = 1000
display_step = 50

其中鲁捏,learning_rate是梯度下降的速率,training_epochs是訓(xùn)練時(shí)的最大迭代次數(shù)曹动,display_step用于將訓(xùn)練的信息打印出來(lái)隔嫡,打印前50步的信息。

然后是讀取訓(xùn)練集數(shù)據(jù)

# Training Data
train_X = numpy.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
                         7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y = numpy.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
                         2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = train_X.shape[0]
# tf Graph Input
X = tf.placeholder("float")
Y = tf.placeholder("float")

# Set model weights
W = tf.Variable(rng.randn(), name="weight")
b = tf.Variable(rng.randn(), name="bias")

構(gòu)建線性模型:

# Construct a linear model
pred = tf.add(tf.multiply(X, W), b)

以Mean squared error作為訓(xùn)練的目標(biāo)函數(shù):

# Mean squared error
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)
# Gradient descent
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

初始化變量

# Initialize the variables (i.e. assign their default value)
init = tf.global_variables_initializer()

開(kāi)始訓(xùn)練:

# Start training
with tf.Session() as sess:
    sess.run(init)

    # Fit all training data
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})

        #Display logs per epoch step
        if (epoch+1) % display_step == 0:
            c = sess.run(cost, feed_dict={X: train_X, Y:train_Y})
            print "Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
                "W=", sess.run(W), "b=", sess.run(b)

    print "Optimization Finished!"
    training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
    print "Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n'

    #Graphic display
    plt.plot(train_X, train_Y, 'ro', label='Original data')
    plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
    plt.legend()
    plt.show()

程序的輸出:

Epoch: 0050 cost= 0.195095107 W= 0.441748 b= -0.580876
Epoch: 0100 cost= 0.181448311 W= 0.430319 b= -0.498661
Epoch: 0150 cost= 0.169377610 W= 0.419571 b= -0.421336
Epoch: 0200 cost= 0.158700854 W= 0.409461 b= -0.348611
Epoch: 0250 cost= 0.149257123 W= 0.399953 b= -0.28021
Epoch: 0300 cost= 0.140904188 W= 0.391011 b= -0.215878
Epoch: 0350 cost= 0.133515999 W= 0.3826 b= -0.155372
Epoch: 0400 cost= 0.126981199 W= 0.374689 b= -0.0984639
Epoch: 0450 cost= 0.121201262 W= 0.367249 b= -0.0449408
Epoch: 0500 cost= 0.116088994 W= 0.360252 b= 0.00539905
Epoch: 0550 cost= 0.111567356 W= 0.35367 b= 0.052745
Epoch: 0600 cost= 0.107568085 W= 0.34748 b= 0.0972751
Epoch: 0650 cost= 0.104030922 W= 0.341659 b= 0.139157
Epoch: 0700 cost= 0.100902475 W= 0.336183 b= 0.178547
Epoch: 0750 cost= 0.098135538 W= 0.331033 b= 0.215595
Epoch: 0800 cost= 0.095688373 W= 0.32619 b= 0.25044
Epoch: 0850 cost= 0.093524046 W= 0.321634 b= 0.283212
Epoch: 0900 cost= 0.091609895 W= 0.317349 b= 0.314035
Epoch: 0950 cost= 0.089917004 W= 0.31332 b= 0.343025
Epoch: 1000 cost= 0.088419855 W= 0.30953 b= 0.370291
Optimization Finished!
Training cost= 0.0884199 W= 0.30953 b= 0.370291 

最終訓(xùn)練結(jié)果:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末博敬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子峰尝,更是在濱河造成了極大的恐慌偏窝,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件武学,死亡現(xiàn)場(chǎng)離奇詭異祭往,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)火窒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門硼补,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人熏矿,你說(shuō)我怎么就攤上這事已骇。” “怎么了票编?”我有些...
    開(kāi)封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵褪储,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我慧域,道長(zhǎng)鲤竹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任昔榴,我火速辦了婚禮辛藻,結(jié)果婚禮上瑟啃,老公的妹妹穿的比我還像新娘。我一直安慰自己揩尸,他們只是感情好蛹屿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著岩榆,像睡著了一般错负。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勇边,一...
    開(kāi)封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天犹撒,我揣著相機(jī)與錄音,去河邊找鬼粒褒。 笑死识颊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奕坟。 我是一名探鬼主播祥款,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼月杉!你這毒婦竟也來(lái)了刃跛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苛萎,失蹤者是張志新(化名)和其女友劉穎桨昙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體腌歉,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛙酪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了翘盖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桂塞。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖最仑,靈堂內(nèi)的尸體忽然破棺而出藐俺,到底是詐尸還是另有隱情炊甲,我是刑警寧澤泥彤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站卿啡,受9級(jí)特大地震影響吟吝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颈娜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一剑逃、第九天 我趴在偏房一處隱蔽的房頂上張望浙宜。 院中可真熱鬧,春花似錦蛹磺、人聲如沸粟瞬。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)裙品。三九已至,卻和暖如春俗或,著一層夾襖步出監(jiān)牢的瞬間市怎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工辛慰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留区匠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓帅腌,卻偏偏與公主長(zhǎng)得像驰弄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子速客,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容