最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TensorFlow平臺(tái)下Python實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)

 更新時(shí)間:2018年03月10日 15:14:47   作者:Jaster_wisdom  
這篇文章主要為大家詳細(xì)介紹了TensorFlow平臺(tái)下Python實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本篇文章主要通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)。訓(xùn)練數(shù)據(jù)是隨機(jī)產(chǎn)生的模擬數(shù)據(jù)集,解決二分類(lèi)問(wèn)題。

下面我們首先說(shuō)一下,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一般過(guò)程:

1.定義神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和前向傳播的輸出結(jié)果

2.定義損失函數(shù)以及反向傳播優(yōu)化的算法

3.生成會(huì)話(Session)并且在訓(xùn)練數(shù)據(jù)上反復(fù)運(yùn)行反向傳播優(yōu)化算法

要記住的一點(diǎn)是,無(wú)論神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如何變化,以上三個(gè)步驟是不會(huì)改變的。

完整代碼如下:

import tensorflow as tf 
#導(dǎo)入TensorFlow工具包并簡(jiǎn)稱(chēng)為tf 
 
from numpy.random import RandomState 
#導(dǎo)入numpy工具包,生成模擬數(shù)據(jù)集 
 
batch_size = 8 
#定義訓(xùn)練數(shù)據(jù)batch的大小 
 
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1)) 
w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)) 
#分別定義一二層和二三層之間的網(wǎng)絡(luò)參數(shù),標(biāo)準(zhǔn)差為1,隨機(jī)產(chǎn)生的數(shù)保持一致 
 
x = tf.placeholder(tf.float32,shape=(None,2),name='x-input') 
y_ = tf.placeholder(tf.float32,shape=(None,1),name='y-input') 
#輸入為兩個(gè)維度,即兩個(gè)特征,輸出為一個(gè)標(biāo)簽,聲明數(shù)據(jù)類(lèi)型float32,None即一個(gè)batch大小 
#y_是真實(shí)的標(biāo)簽 
 
a = tf.matmul(x,w1) 
y = tf.matmul(a,w2) 
#定義神經(jīng)網(wǎng)絡(luò)前向傳播過(guò)程 
 
cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y,1e-10,1.0))) 
train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy) 
#定義損失函數(shù)和反向傳播算法 
 
rdm = RandomState(1) 
dataset_size = 128 
#產(chǎn)生128組數(shù)據(jù) 
X = rdm.rand(dataset_size,2) 
Y = [[int(x1+x2 < 1)] for (x1,x2) in X] 
#將所有x1+x2<1的樣本視為正樣本,表示為1;其余為0 
 
#創(chuàng)建會(huì)話來(lái)運(yùn)行TensorFlow程序 
with tf.Session() as sess: 
 init_op = tf.global_variables_initializer() 
 #初始化變量 
 sess.run(init_op) 
 
 print(sess.run(w1)) 
 print(sess.run(w2)) 
 #打印出訓(xùn)練網(wǎng)絡(luò)之前網(wǎng)絡(luò)參數(shù)的值 
 
 STEPS = 5000 
 #設(shè)置訓(xùn)練的輪數(shù) 
 for i in range(STEPS): 
  start = (i * batch_size) % dataset_size 
  end = min(start+batch_size,dataset_size) 
 #每次選取batch_size個(gè)樣本進(jìn)行訓(xùn)練 
  
  sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]}) 
 #通過(guò)選取的樣本訓(xùn)練神經(jīng)網(wǎng)絡(luò)并更新參數(shù) 
  
  if i%1000 == 0: 
   total_cross_entropy = sess.run(cross_entropy,feed_dict={x:X,y_:Y}) 
   print("After %d training step(s),cross entropy on all data is %g" % (i,total_cross_entropy)) 
 #每隔一段時(shí)間計(jì)算在所有數(shù)據(jù)上的交叉熵并輸出,隨著訓(xùn)練的進(jìn)行,交叉熵逐漸變小 
 
 print(sess.run(w1)) 
 print(sess.run(w2)) 
 #打印出訓(xùn)練之后神經(jīng)網(wǎng)絡(luò)參數(shù)的值 

運(yùn)行結(jié)果如下:


結(jié)果說(shuō)明:

首先是打印出訓(xùn)練之前的網(wǎng)絡(luò)參數(shù),也就是隨機(jī)產(chǎn)生的參數(shù)值,然后將訓(xùn)練過(guò)程中每隔1000次的交叉熵輸出,發(fā)現(xiàn)交叉熵在逐漸減小,說(shuō)明分類(lèi)的性能在變好。最后是訓(xùn)練網(wǎng)絡(luò)結(jié)束后網(wǎng)絡(luò)的參數(shù)。

分享一個(gè)圖形化神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程的網(wǎng)站:點(diǎn)這里,可以自己定義網(wǎng)絡(luò)參數(shù)的大小,層數(shù)以及學(xué)習(xí)速率的大小,并且訓(xùn)練過(guò)程會(huì)以很直觀的形式展示出來(lái)。比如:


 

以上對(duì)于神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程可以有一個(gè)很深刻的理解。

最后,再補(bǔ)充一些TensorFlow相關(guān)的知識(shí):

1.TensorFlow計(jì)算模型-計(jì)算圖

       Tensor表示張量,可以簡(jiǎn)單的理解為多維數(shù)據(jù)結(jié)構(gòu);Flow則體現(xiàn)了它的計(jì)算模型。Flow翻譯過(guò)來(lái)是“流”,它直觀地表達(dá)了張量之間通過(guò)計(jì)算相互轉(zhuǎn)換的過(guò)程。TensorFlow中的每一個(gè)計(jì)算都是計(jì)算圖上的一個(gè)節(jié)點(diǎn),而節(jié)點(diǎn)之間的邊描述了計(jì)算之間的依賴(lài)關(guān)系。

指定GPU方法,命令如下:

import tensorflow as tf
a = tf.constant([1.0,2.0],name=“a”)
b = tf.constant([3.0,4.0],name=“b”)
g = tf.Graph()
with g.device(/gpu:0):
result = a + b
sess = tf.Session()
sess.run(result)

2.TensorFlow數(shù)據(jù)模型-張量

      張量是管理數(shù)據(jù)的形式。零階張量表示標(biāo)量,第一階張量為向量,也就是一維數(shù)組,一般來(lái)說(shuō),第n階張量可以理解為一個(gè)n維數(shù)組。張量本身不存儲(chǔ)運(yùn)算的結(jié)果,它只是得到對(duì)結(jié)果的一個(gè)引用??梢允褂胻f.Session().run(result)語(yǔ)句來(lái)得到計(jì)算結(jié)果。

3.TensorFlow運(yùn)行模型-會(huì)話

我們使用session來(lái)執(zhí)行定義好的運(yùn)算。

主要有以下兩種方式,第一種會(huì)產(chǎn)生內(nèi)存泄漏,第二種不會(huì)有這種問(wèn)題。

#創(chuàng)建一個(gè)會(huì)話
sess = tf.Session()
sess.run(…)
#關(guān)閉會(huì)話使得本次運(yùn)行中使用的資源得到釋放
sess.close()

第二種方式是通過(guò)Python的上下文資源管理器來(lái)使用會(huì)話。

with tf.Session() as sess:
sess.run(…)

此種方式自動(dòng)關(guān)閉和自動(dòng)進(jìn)行資源的釋放

4.TensorFlow-神經(jīng)網(wǎng)絡(luò)例子

使用神經(jīng)網(wǎng)絡(luò)解決分類(lèi)問(wèn)題可以分為以下四個(gè)步驟:
①提取問(wèn)題中實(shí)體的特征向量作為輸入。
②定義神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),并定義如何從神經(jīng)網(wǎng)絡(luò)的輸入得到輸出。這個(gè)過(guò)程就是神經(jīng)網(wǎng)絡(luò)的前向傳播算法。
③通過(guò)訓(xùn)練數(shù)據(jù)來(lái)調(diào)整神經(jīng)網(wǎng)絡(luò)中參數(shù)的設(shè)置,這就是訓(xùn)練網(wǎng)絡(luò)的過(guò)程。
④使用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)未知的數(shù)據(jù)  

在TensorFlow中聲明一個(gè)2*3的矩陣變量的方法:

weight = tf.Variable(tf.random_normal([2,3],stddev=2))

 即表示為方差為0、標(biāo)準(zhǔn)差為2的正態(tài)分布

在TensorFlow中,一個(gè)變量的值在被使用之前,這個(gè)變量的初始化過(guò)程需要被明確調(diào)用。一下子初始化所有的變量

sess = tf.Session()
init_op = tf.initialize_all_variables()

或者換成init_op = tf.global_variables_initializer()也可

sess.run(init_op)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • PHPMyAdmin及權(quán)限配置

    PHPMyAdmin及權(quán)限配置

    這篇文章主要介紹了PHPMyAdmin及權(quán)限配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2014-08-08
  • python中常用的九個(gè)語(yǔ)法技巧

    python中常用的九個(gè)語(yǔ)法技巧

    大家好,本篇文章主要講的是python中常用的九個(gè)語(yǔ)法技巧,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • python ansible服務(wù)及劇本編寫(xiě)

    python ansible服務(wù)及劇本編寫(xiě)

    python語(yǔ)言是運(yùn)維人員必會(huì)的語(yǔ)言,而ansible是一個(gè)基于Python開(kāi)發(fā)的自動(dòng)化運(yùn)維工具 (saltstack)。其功能實(shí)現(xiàn)基于SSH遠(yuǎn)程連接服務(wù);ansible可以實(shí)現(xiàn)批量系統(tǒng)配置、批量軟件部署、批量文件拷貝、批量運(yùn)行命令等功能
    2017-12-12
  • pandas dataframe拼接后index重新排序方式

    pandas dataframe拼接后index重新排序方式

    這篇文章主要介紹了pandas dataframe拼接后index重新排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python/ArcPy遍歷指定目錄中的MDB文件方法

    Python/ArcPy遍歷指定目錄中的MDB文件方法

    今天小編就為大家分享一篇Python/ArcPy遍歷指定目錄中的MDB文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Python實(shí)現(xiàn)二叉搜索樹(shù)

    Python實(shí)現(xiàn)二叉搜索樹(shù)

    二叉搜索樹(shù)(二叉排序樹(shù))它的每個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)為1個(gè)父節(jié)點(diǎn)指針,1個(gè)左孩子指針,1個(gè)有孩子指針,還有就是自己的數(shù)據(jù)部分了,因?yàn)橹挥凶笥覂珊⒆?所以才叫二叉樹(shù),在此基礎(chǔ)上,該二叉樹(shù)還滿足另外一個(gè)條件:每個(gè)結(jié)點(diǎn)的左孩子都不大于該結(jié)點(diǎn)&&每個(gè)結(jié)點(diǎn)的右孩子都大于該結(jié)點(diǎn).
    2016-02-02
  • 基于Django靜態(tài)資源部署404的解決方法

    基于Django靜態(tài)資源部署404的解決方法

    今天小編就為大家分享一篇基于Django靜態(tài)資源部署404的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python打包多類(lèi)型文件的操作方法

    python打包多類(lèi)型文件的操作方法

    這篇文章主要介紹了python打包多類(lèi)型文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python中pyplot基礎(chǔ)圖標(biāo)函數(shù)整理

    python中pyplot基礎(chǔ)圖標(biāo)函數(shù)整理

    在本篇文章里小編給大家整理的是一篇關(guān)于python中pyplot基礎(chǔ)圖標(biāo)函數(shù)整理的相關(guān)知識(shí)點(diǎn),有興趣的朋友們可以參考下。
    2020-11-11
  • Python實(shí)現(xiàn)獲取磁盤(pán)剩余空間的2種方法

    Python實(shí)現(xiàn)獲取磁盤(pán)剩余空間的2種方法

    這篇文章主要介紹了Python實(shí)現(xiàn)獲取磁盤(pán)剩余空間的2種方法,結(jié)合具體實(shí)例形式分析了Python操作計(jì)算機(jī)硬件的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06

最新評(píng)論

蒙自县| 福海县| 宁德市| 长宁区| 万山特区| 浦县| 盈江县| 肥乡县| 台安县| 新密市| 桃源县| 蓝山县| 万年县| 许昌县| 缙云县| 新建县| 临清市| 寻乌县| 临海市| 蚌埠市| 吴旗县| 根河市| 科技| 辛集市| 商都县| 通榆县| 塔河县| 光山县| 通道| 双牌县| 延庆县| 中卫市| 贵州省| 麟游县| 南充市| 汾西县| 建水县| 龙井市| 高雄市| 会理县| 大连市|