Tensorflow學(xué)習(xí)筆記(二)

Tensorflow學(xué)習(xí)筆記(一)中间聊,我們介紹了tensorflow的主要思想攒盈,本節(jié)將介紹tensorflow關(guān)于矩陣的一些基本運算,他們是構(gòu)成圖的重要元素哎榴。

張量基本運算

  1. 加法運算
    在tensorflow中使用加法可以運用重載的'+'和tf.add型豁,要求相加的兩個張量維度和數(shù)據(jù)類型是一致的(如果是矩陣加上標(biāo)量或者矩陣加上行數(shù)相等的行向量或者列數(shù)向量的列向量也是合法的)。下面例子說明'+'的默認(rèn)name是add尚蝌,tf.add的默認(rèn)name是Add迎变。
import tensorflow as tf
w1 = tf.Variable(tf.ones([2, 2]), name='w1')
w2 = tf.Variable(tf.ones([2, 2]), name='w2')
w3 = w1+w2
w4 = tf.add(w1, w2)
print(w3, w4)
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
print(w3.eval(), w4.eval())
>>Tensor("add:0", shape=(2, 2), dtype=float32) Tensor("Add:0", shape=(2, 2), dtype=float32)
[[2. 2.]
 [2. 2.]] [[2. 2.]
 [2. 2.]]
  1. 矩陣乘法
    矩陣乘法要求相乘的兩個矩陣必須滿足維數(shù)要求,且均為2維矩陣飘言。值得注意的是衣形,如果是兩個向量相乘,必須指定shape = [1,n]這種形式姿鸿,否則shape=[n]會報錯谆吴。例如
w1 = tf.constant([1, 2], shape=[1, 2])
w1_p = tf.constant([1, 2])
w2 = tf.constant([2, 3], shape=[2, 1])
w2_p = tf.constant([1, 2])
# 以下OK
w3 = tf.matmul(w1, w2)
# 以下報錯>>Shape must be rank 2 but is rank 1 for 'MatMul_1' (op: 'MatMul') with input shapes: [2], [2].
w3_p = tf.matmul(w1_p, w2_p)

有的時候,為了使得矩陣維度相容苛预,張量可以reshape句狼,例如

import tensorflow as tf
w1_p = tf.reshape(tf.constant([3, 4]), [2, 1])
w2_p = tf.reshape(tf.constant([5, 6]), [1, 2])
w3_p = tf.matmul(w1_p, w2_p)
tf.InteractiveSession()
print(w3_p.eval())
>>[[15 18]
 [20 24]]

另外一個重要的矩陣操作是轉(zhuǎn)置tf.transpose,其使用方法如下

import tensorflow as tf
w1 = tf.reshape(tf.constant([3, 4]), [2, 1])
w2 = tf.transpose(w1, perm=[1, 0])
tf.InteractiveSession()
print(w1.eval(), w2.eval())
>>[[3]
 [4]] [[3 4]]

其中perm是定義的轉(zhuǎn)置之后各個軸的順序热某,對二維矩陣的轉(zhuǎn)置來說腻菇,perm默認(rèn)為[1, 0]。如果perm=[0,1]則transpose得到原矩陣苫拍。

  1. 元素乘法(點乘)
    兩個矩陣元素相乘可以使用tf.multiply或者重載運算符“*”芜繁,兩者等價。調(diào)用方法如下:
import tensorflow as tf
w1 = (tf.constant([3, 4]))
w2 = (tf.constant([5, 6]))
tf.InteractiveSession()
print(tf.multiply(w1, w2).eval())
print((w1*w2).eval())

需要注意的一點是绒极,矩陣元素相乘要求兩個矩陣維度是相同的骏令,得到的結(jié)果是對應(yīng)的元素相乘。如果維度不同垄提,要注意以下特殊情況

  • 矩陣點乘向量或者標(biāo)量榔袋,將會自動擴充向量或者標(biāo)量到與矩陣相同的維度再進行點乘。但要注意向量擴充的時候必須有一個軸的維度是一致的铡俐,例如m\times n階矩陣可以和n階列向量點乘(n階列向量會被擴展成m\times n階矩陣凰兑,且每列為原列向量),也可以和m階行向量點乘审丘,但是m\times n階矩陣和n階行向量點乘則會報錯吏够,因為其無法擴展成相同維度的矩陣。
  • 對于兩個不同維度的向量,只允許行向量點乘列向量或者列向量點乘行向量锅知,不允許同為行向量相乘或者同為列向量相乘播急。m階行向量點乘n階將會得到m\times n階矩陣,即m階行向量被展開成m\times n階矩陣(每行相同)售睹,n階列向量被展開成m\times n階矩陣(每列相同)再點積桩警。
  1. 其他運算
    tensorflow提供和numpy一樣豐富的矩陣及元素級計算API,包括基本四則運算昌妹、矩陣數(shù)學(xué)函數(shù)(如trace捶枢、求逆、svd分解等)飞崖、規(guī)約計算(reduction: 如reduce_sum(input_tensor, axis=none)烂叔、reduce_mean等)、累加累積計算固歪、切割操作運算长已、序列比較與索引提取操作,詳細(xì)可見運算API解析昼牛。
  2. 關(guān)系運算
    比較兩個維度相同的矩陣,返回相同shape的邏輯矩陣康聂。如下例
w1 = tf.constant([1,2,3])
w2 = tf.constant([1,3,2])
tf.InteractiveSession()
print(tf.equal(w1, w2).eval())
>>[True False False]
print(tf.greater(w1, w2).eval())
>>[False False  True]
print(tf.less(w1, w2).eval())
>>[False  True False]
print(tf.greater_equal(w1, w2).eval())
>>[True False  True]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贰健,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恬汁,更是在濱河造成了極大的恐慌伶椿,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氓侧,死亡現(xiàn)場離奇詭異脊另,居然都是意外死亡,警方通過查閱死者的電腦和手機约巷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門偎痛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人独郎,你說我怎么就攤上這事踩麦。” “怎么了氓癌?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵谓谦,是天一觀的道長。 經(jīng)常有香客問我贪婉,道長反粥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮才顿,結(jié)果婚禮上莫湘,老公的妹妹穿的比我還像新娘。我一直安慰自己娜膘,他們只是感情好逊脯,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竣贪,像睡著了一般军洼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上演怎,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天匕争,我揣著相機與錄音,去河邊找鬼爷耀。 笑死甘桑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的歹叮。 我是一名探鬼主播跑杭,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咆耿!你這毒婦竟也來了德谅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤萨螺,失蹤者是張志新(化名)和其女友劉穎窄做,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慰技,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡椭盏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吻商。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掏颊。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖艾帐,靈堂內(nèi)的尸體忽然破棺而出蚯舱,到底是詐尸還是另有隱情,我是刑警寧澤掩蛤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布枉昏,位于F島的核電站,受9級特大地震影響揍鸟,放射性物質(zhì)發(fā)生泄漏兄裂。R本人自食惡果不足惜句旱,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晰奖。 院中可真熱鬧谈撒,春花似錦、人聲如沸匾南。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛆楞。三九已至溯乒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豹爹,已是汗流浹背裆悄。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留臂聋,地道東北人光稼。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像孩等,于是被迫代替她去往敵國和親艾君。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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