tensorflow 3. 線性回歸和優(yōu)化器

本節(jié)例子在這里

本節(jié)例子主要計(jì)算Y=X*w + b公式里的W和b參數(shù)界赔。優(yōu)化器選用的是GradientDescentOptimizer。

我手工敲了一遍牵触,翻譯了注釋淮悼,如下:

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

# 超參數(shù)
learning_rate = 0.01
training_epochs = 1000
display_step = 50

# 訓(xùn)練數(shù)據(jù)
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] #參數(shù)組數(shù)

# 計(jì)算圖的輸入節(jié)點(diǎn)
X = tf.placeholder('float')
Y = tf.placeholder('float')

# 初始化模型權(quán)重
W = tf.Variable(rng.randn(), name="weight")
b = tf.Variable(rng.randn(), name="bias")

# 構(gòu)造一個(gè)線性模型
pred = tf.add(tf.multiply(X, W), b)

#均方誤差
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)
#梯度下降
#注意,minimize()將會(huì)改變W和b, 變量的trainable屬性默認(rèn)是True
#這里使用梯度下降法來訓(xùn)練參數(shù)揽思,學(xué)習(xí)率由learning_rate指定
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

#初始化變量
init = tf.global_variables_initializer()

#開始訓(xùn)練
with tf.Session() as sess:
    #運(yùn)行初始化動(dòng)作
    sess.run(init)

    #載入訓(xùn)練數(shù)據(jù)
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict = {X:x, Y:y})

    #每過一定步數(shù)(display_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), '\n')

    print('最優(yōu)化訓(xùn)練結(jié)束')
    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')

    #圖表顯示
    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()

    #測(cè)試用例
    #應(yīng)觀眾要求袜腥,增加了測(cè)試用例:https://github.com/aymericdamien/TensorFlow-Examples/issues/2
    test_X = numpy.asarray([6.83, 4.668, 8.9, 7.91, 5.7, 8.7, 3.1, 2.1])
    test_Y = numpy.asarray([1.84, 2.273, 3.2, 2.831, 2.92, 3.24, 1.35, 1.03])

    print("Testing... (Mean square loss Comparison)")
    testing_cost = sess.run(
        tf.reduce_sum(tf.pow(pred - Y, 2))/(2*test_X.shape[0]),
        feed_dict = {X:test_X, Y:test_Y}) #與上面的代價(jià)計(jì)算使用同樣的函數(shù)
    print('testing cost=', testing_cost)
    print('Absolute mean square loss difference:', abs(
        training_cost - testing_cost))

    plt.plot(test_X, test_Y, 'bo', label='Testing data')
    plt.plot(train_X, sess.run(W)*train_X+sess.run(b), label='Fitted line')
    plt.legend()
    plt.show()

輸出內(nèi)容為:

Epoch: 1000 cost= 0.082081832 W= 0.289674 b= 0.513132 

最優(yōu)化訓(xùn)練結(jié)束
training_cost= 0.0820818 W= 0.289674 b= 0.513132 

Testing... (Mean square loss Comparison)
testing cost= 0.0768293
Absolute mean square loss difference: 0.00525256

輸出圖表為: [圖片上傳中...(image-89f954-1521646069033-1)]

本節(jié)的新知識(shí)點(diǎn)主要有兩塊:

  • 優(yōu)化器
  • matplolab畫圖

關(guān)于優(yōu)化器這里有篇不錯(cuò)的文章(如何選擇優(yōu)化器 optimizer

下面是tensorflow中提供的優(yōu)化器 [圖片上傳中...(image-26b483-1521646069033-0)]

作者的結(jié)論如下:

如何選擇?

如果數(shù)據(jù)是稀疏的钉汗,就用自適用方法羹令,即 Adagrad, Adadelta, RMSprop, Adam鲤屡。

RMSprop, Adadelta, Adam 在很多情況下的效果是相似的。

Adam 就是在 RMSprop 的基礎(chǔ)上加了 bias-correction 和 momentum福侈,

隨著梯度變的稀疏酒来,Adam 比 RMSprop 效果會(huì)好。

整體來講癌刽,Adam 是最好的選擇役首。

作者:不會(huì)停的蝸牛
鏈接:http://www.reibang.com/p/d99b83f4c1a6
來源:簡(jiǎn)書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)显拜,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處衡奥。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市远荠,隨后出現(xiàn)的幾起案子矮固,更是在濱河造成了極大的恐慌,老刑警劉巖譬淳,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档址,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡邻梆,警方通過查閱死者的電腦和手機(jī)守伸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浦妄,“玉大人尼摹,你說我怎么就攤上這事〖谅Γ” “怎么了蠢涝?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)阅懦。 經(jīng)常有香客問我和二,道長(zhǎng),這世上最難降的妖魔是什么耳胎? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任惯吕,我火速辦了婚禮,結(jié)果婚禮上怕午,老公的妹妹穿的比我還像新娘混埠。我一直安慰自己,他們只是感情好诗轻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布钳宪。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吏颖。 梳的紋絲不亂的頭發(fā)上搔体,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音半醉,去河邊找鬼疚俱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缩多,可吹牛的內(nèi)容都是我干的呆奕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼衬吆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼梁钾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逊抡,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤姆泻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后冒嫡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拇勃,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年孝凌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了方咆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蟀架,死狀恐怖瓣赂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辜窑,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布寨躁,位于F島的核電站穆碎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏职恳。R本人自食惡果不足惜所禀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望放钦。 院中可真熱鬧色徘,春花似錦、人聲如沸操禀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至斤寂,卻和暖如春耿焊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遍搞。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工罗侯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人溪猿。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓钩杰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诊县。 傳聞我的和親對(duì)象是個(gè)殘疾皇子讲弄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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