真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

用tensorflow構(gòu)建線性回歸模型的示例代碼-創(chuàng)新互聯(lián)

用tensorflow構(gòu)建簡單的線性回歸模型是tensorflow的一個基礎(chǔ)樣例,但是原有的樣例存在一些問題,我在實際調(diào)試的過程中做了一點自己的改進,并且有一些體會。

創(chuàng)新互聯(lián)公司主營城區(qū)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,城區(qū)h5重慶小程序開發(fā)搭建,城區(qū)網(wǎng)站營銷推廣歡迎城區(qū)等地區(qū)企業(yè)咨詢

首先總結(jié)一下tf構(gòu)建模型的總體套路

1、先定義模型的整體圖結(jié)構(gòu),未知的部分,比如輸入就用placeholder來代替。

2、再定義最后與目標的誤差函數(shù)。

3、最后選擇優(yōu)化方法。

另外幾個值得注意的地方是:

1、tensorflow構(gòu)建模型第一步是先用代碼搭建圖模型,此時圖模型是靜止的,是不產(chǎn)生任何運算結(jié)果的,必須使用Session來驅(qū)動。

2、第二步根據(jù)問題的不同要求構(gòu)建不同的誤差函數(shù),這個函數(shù)就是要求優(yōu)化的函數(shù)。

3、調(diào)用合適的優(yōu)化器優(yōu)化誤差函數(shù),注意,此時反向傳播調(diào)整參數(shù)的過程隱藏在了圖模型當中,并沒有顯式顯現(xiàn)出來。

4、tensorflow的中文意思是張量流動,也就是說有兩個意思,一個是參與運算的不僅僅是標量或是矩陣,甚至可以是具有很高維度的張量,第二個意思是這些數(shù)據(jù)在圖模型中流動,不停地更新。

5、session的run函數(shù)中,按照傳入的操作向上查找,凡是操作中涉及的無論是變量、常量都要參與運算,占位符則要在run過程中以字典形式傳入。

以上時tensorflow的一點認識,下面是關(guān)于梯度下降的一點新認識。

1、梯度下降法分為批量梯度下降和隨機梯度下降法,第一種是所有數(shù)據(jù)都參與運算后,計算誤差函數(shù),根據(jù)此誤差函數(shù)來更新模型參數(shù),實際調(diào)試發(fā)現(xiàn),如果定義誤差函數(shù)為平方誤差函數(shù),這個值很快就會飛掉,原因是,批量平方誤差都加起來可能會很大,如果此時學(xué)習(xí)率比較高,那么調(diào)整就會過,造成模型參數(shù)向一個方向大幅調(diào)整,造成最終結(jié)果發(fā)散。所以這個時候要降低學(xué)習(xí)率,讓參數(shù)變化不要太快。

2、隨機梯度下降法,每次用一個數(shù)據(jù)計算誤差函數(shù),然后更新模型參數(shù),這個方法有可能會造成結(jié)果出現(xiàn)震蕩,而且麻煩的是由于要一個個取出數(shù)據(jù)參與運算,而不是像批量計算那樣采用了廣播或者向量化乘法的機制,收斂會慢一些。但是速度要比使用批量梯度下降要快,原因是不需要每次計算全部數(shù)據(jù)的梯度了。比較折中的辦法是mini-batch,也就是每次選用一小部分數(shù)據(jù)做梯度下降,目前這也是最為常用的方法了。

3、epoch概念:所有樣本集過完一輪,就是一個epoch,很明顯,如果是嚴格的隨機梯度下降法,一個epoch內(nèi)更新了樣本個數(shù)這么多次參數(shù),而批量法只更新了一次。

以上是我個人的一點認識,希望大家看到有不對的地方及時批評指針,不勝感激!

#encoding=utf-8 
__author__ = 'freedom' 
import tensorflow as tf 
import numpy as np 
 
def createData(dataNum,w,b,sigma): 
 train_x = np.arange(dataNum) 
 train_y = w*train_x+b+np.random.randn()*sigma 
 #print train_x 
 #print train_y 
 return train_x,train_y 
 
def linerRegression(train_x,train_y,epoch=100000,rate = 0.000001): 
 train_x = np.array(train_x) 
 train_y = np.array(train_y) 
 n = train_x.shape[0] 
 x = tf.placeholder("float") 
 y = tf.placeholder("float") 
 w = tf.Variable(tf.random_normal([1])) # 生成隨機權(quán)重 
 b = tf.Variable(tf.random_normal([1])) 
 
 pred = tf.add(tf.mul(x,w),b) 
 loss = tf.reduce_sum(tf.pow(pred-y,2)) 
 optimizer = tf.train.GradientDescentOptimizer(rate).minimize(loss) 
 init = tf.initialize_all_variables() 
 
 sess = tf.Session() 
 sess.run(init) 
 print 'w start is ',sess.run(w) 
 print 'b start is ',sess.run(b) 
 for index in range(epoch): 
  #for tx,ty in zip(train_x,train_y): 
   #sess.run(optimizer,{x:tx,y:ty}) 
  sess.run(optimizer,{x:train_x,y:train_y}) 
  # print 'w is ',sess.run(w) 
  # print 'b is ',sess.run(b) 
  # print 'pred is ',sess.run(pred,{x:train_x}) 
  # print 'loss is ',sess.run(loss,{x:train_x,y:train_y}) 
  #print '------------------' 
 print 'loss is ',sess.run(loss,{x:train_x,y:train_y}) 
 w = sess.run(w) 
 b = sess.run(b) 
 return w,b 
 
def predictionTest(test_x,test_y,w,b): 
 W = tf.placeholder(tf.float32) 
 B = tf.placeholder(tf.float32) 
 X = tf.placeholder(tf.float32) 
 Y = tf.placeholder(tf.float32) 
 n = test_x.shape[0] 
 pred = tf.add(tf.mul(X,W),B) 
 loss = tf.reduce_mean(tf.pow(pred-Y,2)) 
 sess = tf.Session() 
 loss = sess.run(loss,{X:test_x,Y:test_y,W:w,B:b}) 
 return loss 
 
if __name__ == "__main__": 
 train_x,train_y = createData(50,2.0,7.0,1.0) 
 test_x,test_y = createData(20,2.0,7.0,1.0) 
 w,b = linerRegression(train_x,train_y) 
 print 'weights',w 
 print 'bias',b 
 loss = predictionTest(test_x,test_y,w,b) 
 print loss 

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站欄目:用tensorflow構(gòu)建線性回歸模型的示例代碼-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/hohpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部