TensorFlow深度學(xué)習(xí)入門筆記(二)基本概念與代碼1

寫在前面

學(xué)習(xí)建議:以下學(xué)習(xí)過(guò)程中有不理解可以簡(jiǎn)單查找下資料似嗤,但不必糾結(jié)(比如非得深究某一個(gè)函數(shù)等),盡量快速的學(xué)一遍届宠,不求甚解無(wú)妨烁落。因?yàn)橛行┲R(shí)現(xiàn)在陌生,可能學(xué)到后面就發(fā)現(xiàn)之前的問(wèn)題都很自然的理解與會(huì)用了豌注。多實(shí)操代碼伤塌,不能只復(fù)制代碼,或者感覺(jué)懂了就只看轧铁。熟能生巧每聪,我亦無(wú)他,唯手熟爾

計(jì)算模型:計(jì)算圖

計(jì)算圖是TensorFlow中最基本的一個(gè)概念属桦,TensorFlow中所有的計(jì)算都會(huì)被轉(zhuǎn)化為計(jì)算圖上的節(jié)點(diǎn)熊痴。TensorFlow名字中的tensor即張量他爸,可以理解為多維數(shù)組聂宾。tensor表明了TensorFlow的數(shù)據(jù)結(jié)構(gòu),即它處理的都是一個(gè)個(gè)tensor诊笤,flow-流體現(xiàn)的是TensorFlow的計(jì)算模型系谐。張量這定義的模型中流動(dòng),轉(zhuǎn)化成不同的tensor,最終完成任務(wù)纪他。

TensorFlow也是一種懶操作鄙煤,即先畫圖,并沒(méi)有真正的開始計(jì)算茶袒,只是定義了各個(gè)計(jì)算節(jié)點(diǎn)梯刚,定義了計(jì)算邏輯,只有最終調(diào)用run()時(shí)才會(huì)真正開始計(jì)算薪寓,有點(diǎn)像scala的模式亡资。TensorFlow中的每一個(gè)計(jì)算都是計(jì)算圖中的一個(gè)節(jié)點(diǎn),而節(jié)點(diǎn)之間的邊描述了計(jì)算之間的依賴關(guān)系(計(jì)算邏輯)向叉。

具體的計(jì)算網(wǎng)絡(luò)結(jié)構(gòu)锥腻,可以通過(guò)TensorFlow中專門的可視化工具TensorBoard畫出來(lái)。TensorBoard后面會(huì)專門講母谎。

TensorFlow程序分為兩個(gè)階段瘦黑,一是定義計(jì)算(圖的形成),二是執(zhí)行計(jì)算(run)

先看一段代碼奇唤,我盡量把注釋寫滿點(diǎn)幸斥,開始接觸不懂沒(méi)關(guān)系,先跟著套路走咬扇,本地跑下代碼

代碼可以左右滑動(dòng)哦

import tensorflow as tf # 幾乎默認(rèn)這種睡毒,咱也不免俗

a = tf.constant([1.0,2.0]) # 定義一個(gè)變量a,并初始化
b = tf.constant([3.0,4.0]) # 定義一個(gè)變量b 冗栗,并初始化
add = a + b # 定義計(jì)算 (這時(shí)并沒(méi)有真正計(jì)算演顾,只是定義了計(jì)算圖邏輯)
print(add) # 打印出 add 從結(jié)果看(輸出  Tensor("add:0", shape=(2,), dtype=float32)),這也只是一種定義沒(méi)有真正計(jì)算出a+b的結(jié)果隅居,
# 三個(gè)節(jié)點(diǎn) a , b , add 钠至。注意這里沒(méi)有顯式的指定計(jì)算圖(tf.Graph),則會(huì)通過(guò)tf.get_default_graph()獲取默認(rèn)的計(jì)算圖

print(a.graph is tf.get_default_graph())
# 輸出 True
# 補(bǔ)充:初學(xué)時(shí)總是混淆這兩個(gè)函數(shù)tf.multiply()與tf.matmul(),在這里記錄下
# tensoflow 中tf.multiply(a,b)與tf.matmul(c,d)比較
a = tf.constant([1.0,2.0]) # 定義一個(gè)變量a胎源,并初始化
b = tf.constant([3.0,4.0]) # 定義一個(gè)變量b 棉钧,并初始化

c = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3])
d = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2]) # 定義一個(gè)變量d ,并初始化
product1 = tf.multiply(a,b) # 對(duì)應(yīng)位置相乘
product2 = tf.matmul(c,d) # 矩陣的乘法涕蚤,得到的結(jié)果是一個(gè)矩陣胎许,行乘列作為對(duì)應(yīng)位置的元素

with tf.Session() as sess:
   print(sess.run(product1))
   print(sess.run(product2))

再來(lái)一段在不同計(jì)算圖中的例子

# 下面定義不同的計(jì)算圖塞赂,并執(zhí)行計(jì)算
import tensorflow as tf

g1 = tf.Graph()
with g1.as_default():
   # 在計(jì)算圖g1中定義變量v,并初始化為0
   v = tf.get_variable('v', shape=[1], initializer=tf.zeros_initializer())
   # # 初始化為常數(shù)
   # v = tf.get_variable('v',initializer=tf.constant([2.0,3.1]))

g2 = tf.Graph()
with g2.as_default():
   # 在計(jì)算圖g2中定義變量v,并初始化為1
   v = tf.get_variable('v', shape=[1], initializer=tf.ones_initializer())

# 在計(jì)算圖g1 中讀取變量 'v'的值方面,輸出
with tf.Session(graph=g1) as sess:  # 這種也幾乎是默認(rèn)对室,參考官網(wǎng)
   # TensorFlow中蜡秽,run之前需要先初始化
   tf.global_variables_initializer().run()
   with tf.variable_scope('',reuse=True):
       # 根據(jù)計(jì)算圖g1初始化的值輸出
       print(sess.run(tf.get_variable('v')))
       # tf.get_variable('v') 獲取變量蚤氏,因前面指定了計(jì)算圖g1代赁,這里會(huì)到g1中獲取

# 在計(jì)算圖g2 中讀取變量 'v'的值,輸出
with tf.Session(graph=g2) as sess:
   # 初始化
   tf.global_variables_initializer().run()
   with tf.variable_scope('',reuse=True):
       # 根據(jù)計(jì)算圖g2初始化的值輸出兽掰,這行會(huì)輸出[1.]
       print(sess.run(tf.get_variable('v')))

數(shù)據(jù)模型:張量

張量是TensorFlow中管理數(shù)據(jù)的形式芭碍。在TensorFlow程序中,所有的數(shù)據(jù)都是通過(guò)張量的形式來(lái)表示孽尽。

零階張量表示標(biāo)量(scalar),也就是一個(gè)數(shù)

一階張量為向量(vector),也就是一個(gè)一維數(shù)組

第n階張量可以理解為一個(gè)n 維數(shù)組

注意在TensorFlow中張量只是對(duì)運(yùn)算結(jié)果的引用窖壕,不是直接采用數(shù)組的形式,在張量中沒(méi)有真正的保存數(shù)字杉女,它保存的是如何得到這些數(shù)字的計(jì)算過(guò)程

import tensorflow as tf # 幾乎默認(rèn)這種

a = tf.constant([1.0,2.0]) # 定義一個(gè)變量a艇拍,并初始化
b = tf.constant([3.0,4.0]) # 定義一個(gè)變量b ,并初始化
add = a + b # 定義計(jì)算 (這時(shí)并沒(méi)有真正計(jì)算宠纯,只是定義了計(jì)算圖邏輯)
print(add) 
# 輸出為 Tensor("add:0", shape=(2,), dtype=float32)

看這個(gè)輸出:Tensor("add:0", shape=(2,), dtype=float32)

可以看出 add 在TensorFlow中是一個(gè)Tensor, 在TensorFlow計(jì)算的結(jié)果不是一個(gè)具體的數(shù)字卸夕,而是一個(gè)張量(Tensor)。一個(gè)Tensor中主要保存了3個(gè)屬性: name,shape,type,(名字婆瓜、維度結(jié)構(gòu)快集、類型)

屬性name是一個(gè)張量的唯一標(biāo)識(shí)符(有重復(fù)會(huì)報(bào)異常),也給出了這個(gè)張量是如何計(jì)算出來(lái)的

其中add:0 說(shuō)明了add這個(gè)張量是計(jì)算節(jié)點(diǎn)’add’輸出的第一個(gè)結(jié)果(編號(hào)從0開始)

屬性shape描述了張量的維度信息廉白。shape=(2,)說(shuō)明張量add是一個(gè)一維數(shù)組个初,數(shù)組的長(zhǎng)度是2

屬性type,是指張量的類型猴蹂,每一個(gè)張量會(huì)有一個(gè)唯一的類型院溺。類型不匹配時(shí)會(huì)報(bào)錯(cuò)

# 使用張量記錄中間結(jié)果
a = tf.constant([1.0,2.0],name='a') # 定義一個(gè)變量a,并初始化
b = tf.constant([3.0,4.0],name='b') # 定義一個(gè)變量b 磅轻,并初始化
result = a + b 
# 直接計(jì)算向量的和珍逸,這樣可讀性會(huì)比較差
result = tf.constant([1.0,2.0],name='a') + tf.constant([3.0,4.0],name='b')

好吧,今天就先介紹這兩個(gè)概念了聋溜,本來(lái)還準(zhǔn)備了會(huì)話谆膳、變量、常量這些概念撮躁,再寫就篇幅太長(zhǎng)了點(diǎn)漱病。索性就寫短點(diǎn)吧,盡量發(fā)的勤快點(diǎn)把曼,小步快跑~

最后杨帽,有問(wèn)題歡迎溝通交流

關(guān)注-微-公眾號(hào)【學(xué)習(xí)與成長(zhǎng)資源庫(kù)】獲取更多免費(fèi)學(xué)習(xí)資料

參考資料

TensorFlow官網(wǎng)

實(shí)戰(zhàn)Google深度學(xué)習(xí)框架

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嗤军,隨后出現(xiàn)的幾起案子注盈,更是在濱河造成了極大的恐慌,老刑警劉巖型雳,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件当凡,死亡現(xiàn)場(chǎng)離奇詭異山害,居然都是意外死亡纠俭,警方通過(guò)查閱死者的電腦和手機(jī)沿量,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冤荆,“玉大人朴则,你說(shuō)我怎么就攤上這事〉黾颍” “怎么了乌妒?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)外邓。 經(jīng)常有香客問(wèn)我撤蚊,道長(zhǎng),這世上最難降的妖魔是什么损话? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任侦啸,我火速辦了婚禮,結(jié)果婚禮上丧枪,老公的妹妹穿的比我還像新娘光涂。我一直安慰自己,他們只是感情好拧烦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布忘闻。 她就那樣靜靜地躺著,像睡著了一般恋博。 火紅的嫁衣襯著肌膚如雪齐佳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天债沮,我揣著相機(jī)與錄音重虑,去河邊找鬼。 笑死秦士,一個(gè)胖子當(dāng)著我的面吹牛缺厉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播隧土,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼提针,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了曹傀?” 一聲冷哼從身側(cè)響起辐脖,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎皆愉,沒(méi)想到半個(gè)月后嗜价,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艇抠,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年久锥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了家淤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瑟由,死狀恐怖絮重,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情歹苦,我是刑警寧澤青伤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站殴瘦,受9級(jí)特大地震影響狠角,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚪腋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一丰歌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辣吃,春花似錦动遭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哩簿,卻和暖如春宵蕉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背节榜。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工羡玛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宗苍。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓稼稿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親讳窟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子让歼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • 該文章為轉(zhuǎn)載文章,作者簡(jiǎn)介:汪劍丽啡,現(xiàn)在在出門問(wèn)問(wèn)負(fù)責(zé)推薦與個(gè)性化谋右。曾在微軟雅虎工作,從事過(guò)搜索和推薦相關(guān)工作补箍。 T...
    名字真的不重要閱讀 5,260評(píng)論 0 3
  • 首先改执,給已經(jīng)裝好的Ubuntu 16.04換上映像文件: 現(xiàn)在再進(jìn)入系統(tǒng)啸蜜,在VMware菜單欄找到如下紅框位置,我...
    凌川江雪閱讀 1,752評(píng)論 0 2
  • 書籍:《優(yōu)秀到不能被忽視》 4月份聽(tīng)了一場(chǎng)關(guān)于親密關(guān)系的講座,主講人是《親密關(guān)系:通往靈魂的橋梁》的作者克里斯多福...
    張韻晞閱讀 243評(píng)論 0 0
  • 【印度】泰戈?duì)?O白開元譯 夕陽(yáng)墜入地平線呢岗, 西天燃燒著鮮紅的霞光冕香,一片寧?kù)o輕輕落在梵學(xué)書院娑羅樹的枝梢上蛹尝,晚風(fēng)...
    暖光淺笑a閱讀 213評(píng)論 0 0