亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

tensorflow的計(jì)算圖總結(jié)

 更新時(shí)間:2020年01月12日 11:03:23   作者:Jeff.Smile  
這篇文章主要介紹了tensorflow的計(jì)算圖總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

計(jì)算圖

在 TensorFlow 中用計(jì)算圖來表示計(jì)算任務(wù)。 計(jì)算圖,是一種有向圖,用來定義計(jì)算的結(jié)構(gòu),實(shí)際上就是一系列的函數(shù)的組合。 用圖的方式,用戶通過用一些簡(jiǎn)單的容易理解的數(shù)學(xué)函數(shù)組件,就可以建立一個(gè)復(fù)雜的運(yùn)算

在 TensorFlow 使用圖,分為兩步:建立計(jì)算圖 和 執(zhí)行圖

圖,在形式上由結(jié)點(diǎn) Nodes 和邊 Edges 組成。 - Nodes,用圓圈表示,代表一些對(duì)數(shù)據(jù)進(jìn)行的計(jì)算或者操作(Operation)。 - Edges,用箭頭表示,是操作之間傳遞的實(shí)際值(Tensor)

建立圖

graph = tf.Graph()

訪問上下文管理器

with graph.as_default(): 

用 with 表示我們用 context manager 告訴 TensorFlow 我們要向某個(gè)具體的 graph 添加 Op 了

執(zhí)行圖圖必須在會(huì)話(Session)里被啟動(dòng),會(huì)話(Session)將圖的 op 分發(fā)到 CPU 或 GPU 之類的設(shè)備上,同時(shí)提供執(zhí)行 op 的方法,這些方法執(zhí)行后,將產(chǎn)生的張量(tensor)返回

## 開啟session

sess = tf.Session()`

一旦開啟了 Session,就可以用 run() 來計(jì)算想要的 Tensor 的值

用完會(huì)話,記得關(guān)掉

sess.close()

Fetches

fetches是session.run()的一個(gè)參數(shù),它可以接收任何一個(gè)我們想要執(zhí)行的op或者Tensor,或者他們對(duì)應(yīng)的list結(jié)構(gòu)。

  • 如果是tensor,那么session.run()輸出的就是一個(gè)Numpy 數(shù)組
  • 如果是Op,那么session.run()輸出的就是None

比如:sess.run(b)就是告訴Session要把計(jì)算b所需要的結(jié)點(diǎn)都找到按順序執(zhí)行并且輸出結(jié)果。

全局變量初始化

tf.global_variables_initializer()

表示將所有定義的Variable變量都準(zhǔn)備好,以便于后續(xù)使用,這個(gè)Op也可以傳給給session.run.比如:

init = tf.global_variables_initializer()
…
sess.run(init)

張量Tensor和OP

在tensorflow中使用tensor來表示所有的數(shù)據(jù)結(jié)構(gòu),計(jì)算圖中操作Op結(jié)點(diǎn)之間傳遞的都是Tensor

  • 定義tensor時(shí)可以直接使用numpy傳遞給Op結(jié)點(diǎn),因?yàn)閠ensorflow的Op可以將python的數(shù)據(jù)類型轉(zhuǎn)化為tensor包括numbers,booleans,strings或者list。
  • 圖中的任何結(jié)點(diǎn)都叫做Operation簡(jiǎn)稱:Op
  • 每個(gè)Op的輸出會(huì)被傳遞到其他Op或者sess.run()

Variable

Variable,變量是維護(hù)圖執(zhí)行過程中的狀態(tài)信息的,需要它來保持和更新參數(shù)數(shù)值,是需要?jiǎng)討B(tài)調(diào)整的。

  • Tensor 和Operation都是一成不變的,而Variable是可以隨著時(shí)間改變的
  • Variables可以用在任何使用tensor的Op中,它當(dāng)前的值就會(huì)被傳遞給使用它的Op
  • Variable通常的初始值是一些很大的0,1或者隨機(jī)值tensor,或者內(nèi)置op:tf.zeros(),tf.ones()等
  • Variable在graph中,狀態(tài)由session管理,也是在session中進(jìn)行初始化,session可以追蹤variable的當(dāng)前值是多少。
  • session可以只初始化一部分variable
  • 使用tf.variables_initializer,傳入初始化變量列表
  • variable的值是可以被改變的
  • 比如使用variable.assign(variable),或者variable.assign_add(1)
  • 每個(gè)session維護(hù)獨(dú)立的variable變量值,同一個(gè)variable不同的session值可以是不同的。
  • 當(dāng)各種Optimizer優(yōu)化器訓(xùn)練機(jī)器學(xué)習(xí)模型時(shí),variable就會(huì)隨之改變,當(dāng)使用variable中的trainable=False屬性可以不被Optimizer改變。

name_scopes

  • name_sopes可以用來管理圖,可以把一組Op放到一個(gè)組塊中

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

相關(guān)文章

最新評(píng)論