Tensorflow的基本使用

使用tensorflow 你必須明白tensorflow

  • 使用圖(graph)來表示計(jì)算任務(wù)
  • 在被稱為會話 Session 的上下文context 中執(zhí)行圖
  • 使用tensor來表示數(shù)據(jù)拉馋,放在圖的節(jié)點(diǎn)中
  • 通過變量(Variable)來維護(hù)狀態(tài)
  • 使用feed和fetch 可以為任意的操作(arbitrary operation)賦值或者從其中獲取數(shù)據(jù)

這個(gè)圖菲饼,其實(shí)就是計(jì)算圖,具體原理不需要知道子库,計(jì)算圖就是flow 睬涧,也可以認(rèn)為是工作流圖募胃,op(節(jié)點(diǎn))的執(zhí)行步驟 就被描述成一個(gè)圖 ,tensor之間的轉(zhuǎn)換就是op處的計(jì)算來做的

計(jì)算圖 Tensorflow

一個(gè)TensorFlow圖描述來計(jì)算的過程畦浓,為了進(jìn)行計(jì)算痹束,圖必須在會話 session里被啟動,會話將op分發(fā)到CPU GPU這樣的設(shè)備上讶请,同時(shí)執(zhí)行op的方法祷嘶,這些方法被執(zhí)行后,將產(chǎn)生的tensor返回秽梅,在Python中 返回的 是 numpy ndarray對象

TensorFlow程序經(jīng)常被組織成一個(gè)構(gòu)建階段和一個(gè)執(zhí)行階段抹蚀,在構(gòu)建階段,op的執(zhí)行步驟被描述成一個(gè)圖企垦,在執(zhí)行階段环壤,使用會話執(zhí)行執(zhí)行圖中的op,因此會話開啟執(zhí)行的環(huán)境
因此 我們通常在構(gòu)建階段钞诡,創(chuàng)一個(gè)神經(jīng)網(wǎng)絡(luò)郑现,然后在執(zhí)行階段通過session反復(fù)調(diào)用這個(gè)神經(jīng)網(wǎng)絡(luò)湃崩,執(zhí)行圖中的op

構(gòu)建圖

構(gòu)建圖的第一步,是創(chuàng)建源op接箫,源op不需要任何的輸入攒读,例如常量constant 源op的輸出被傳遞給其他op做運(yùn)算

matrix1=tf.constant([[3.,3.]]) 1x2矩陣
matrix2=tf.constant([[2.] , [2.]])  2x1矩陣
product=tf.matmul(matrix1,matrix2)

啟動圖

sess = tf.session() 
result=sess.run(product) 執(zhí)行上面定義的三個(gè)運(yùn)算
print result 打印獲取的矩陣
任務(wù)完成 關(guān)閉會話:
sess.close()

With 代碼塊

with tf.Session() as sess:
  result = sess.run([product])
  print result

With代碼塊,自動獲取和釋放資源辛友,除了顯式調(diào)用close外薄扁,也可以使用with代碼塊來自動完成關(guān)閉釋放資源動作

變量 Variables

# 創(chuàng)建一個(gè)變量, 初始化為標(biāo)量 0.
state = tf.Variable(0, name="counter")
#疑問一:這個(gè)name 有什么用?

# 創(chuàng)建一個(gè) op, 其作用是使 state 增加 1

one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
# 注意這里的add 和 給 
# 而且無論怎樣 都需要定義 操作op 然后 才可以跑 任何方法 都是有返# 回值的
# 啟動圖后, 變量必須先經(jīng)過`初始化` (init) op 初始化,
# 首先必須增加一個(gè)`初始化` op 到圖中.
init_op = tf.initialize_all_variables()
# 包含變量的情況 必須在session會話中 先執(zhí)行此操作 

# 啟動圖, 運(yùn)行 op
with tf.Session() as sess:
  # 運(yùn)行 'init' op
  sess.run(init_op)
  # 打印 'state' 的初始值
  print sess.run(state)
  # 運(yùn)行 op, 更新 'state', 并打印 'state'
  for _ in range(3):
    sess.run(update)
    print sess.run(state)
#疑問2 直接print state 不行嗎废累? 為什還要sess.run一下

繪制操作圖邓梅,然后一步步 用session 執(zhí)行 或許 只跑最終定義的一個(gè)op就行

Fetch 和 Feed

with tf.Session() as sess:
  result = sess.run([mul, intermed])
  print result
# 取回多個(gè)值 

feed 使用一個(gè) tensor 值臨時(shí)替換一個(gè)操作的輸出結(jié)果. 你可以提供 feed 數(shù)據(jù)作為 run() 調(diào)用的參數(shù). feed 只在調(diào)用它的方法內(nèi)有效, 方法結(jié)束, feed 就會消失. 最常見的用例是將某些特殊的操作指定為 "feed" 操作, 標(biāo)記的方法是使用 tf.placeholder() 為這些操作創(chuàng)建占位符.

#也就是說 feed 和 placeholder 結(jié)合使用 否則placeholder 定義的隨時(shí)#被替換的 tensor就沒有意義 始終沒有輸入值的話
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)

with tf.Session() as sess:
  print sess.run([output], feed_dict={input1:[7.], input2:[2.]})

# 輸出:
# [array([ 14.], dtype=float32)]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市邑滨,隨后出現(xiàn)的幾起案子日缨,更是在濱河造成了極大的恐慌,老刑警劉巖掖看,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匣距,死亡現(xiàn)場離奇詭異,居然都是意外死亡哎壳,警方通過查閱死者的電腦和手機(jī)毅待,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來归榕,“玉大人恩静,你說我怎么就攤上這事《卓溃” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵邑飒,是天一觀的道長循签。 經(jīng)常有香客問我,道長疙咸,這世上最難降的妖魔是什么县匠? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮撒轮,結(jié)果婚禮上乞旦,老公的妹妹穿的比我還像新娘。我一直安慰自己题山,他們只是感情好兰粉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著顶瞳,像睡著了一般玖姑。 火紅的嫁衣襯著肌膚如雪愕秫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天焰络,我揣著相機(jī)與錄音戴甩,去河邊找鬼。 笑死闪彼,一個(gè)胖子當(dāng)著我的面吹牛甜孤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畏腕,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼缴川,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了郊尝?” 一聲冷哼從身側(cè)響起二跋,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎流昏,沒想到半個(gè)月后扎即,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡况凉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年谚鄙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刁绒。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闷营,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出知市,到底是詐尸還是另有隱情傻盟,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布嫂丙,位于F島的核電站娘赴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏跟啤。R本人自食惡果不足惜诽表,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隅肥。 院中可真熱鬧竿奏,春花似錦、人聲如沸腥放。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秃症。三九已至平痰,卻和暖如春汞舱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宗雇。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工昂芜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赔蒲。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓泌神,卻偏偏與公主長得像,于是被迫代替她去往敵國和親舞虱。 傳聞我的和親對象是個(gè)殘疾皇子欢际,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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

  • 1. 介紹 首先讓我們來看看TensorFlow! 但是在我們開始之前矾兜,我們先來看看Python API中的Ten...
    JasonJe閱讀 11,724評論 1 32
  • 基本使用 使用 TensorFlow, 你必須明白 TensorFlow: 使用圖 (graph) 來...
    西方失敗9527閱讀 759評論 0 1
  • 人究竟是個(gè)什么生物损趋, 莫名的優(yōu)越感, 以為只聽懂自己說的話就以為自己很厲害椅寺, 別自戀了浑槽, 不過, 是一個(gè)小丑返帕, 活...
    qu溜達(dá)溜達(dá)閱讀 75評論 0 0
  • mac上有自帶的腳本工具桐玻,腳本編輯器。AppleScript 是 Mac OS X內(nèi)置的一種功能強(qiáng)大的腳本語言荆萤。 ...
    Curry_J_X閱讀 10,787評論 2 8
  • 我曾經(jīng)是一個(gè)做事經(jīng)常半途而廢的人链韭,感興趣的事情很多偏竟,嘗試的事情很多,但善始善終的事情卻極少敞峭。后來我開始反思苫耸,持續(xù)的...
    藍(lán)溪b_d閱讀 680評論 1 3