學習筆記TF004:張量表示、類型、形狀、計算

張量是N維矩陣抽象。一維張量是向量。二維張量是矩陣,三維或以上稱N維張量或N階張量。

輸入節點,從接收標量,改為接收向量。.reduce_prod()創建歸約乘積Op。reduce_sum()創建歸約求和Op。

import tensorflow as tf
a = tf.constant([[[1,2,3],[4,5,6]],[[7,8,9],[1,2,3]]], name="input_a")
b = tf.reduce_prod(a, name="prod_b")#定義節點b,創建歸約乘積Op,接收一個N維張量輸入,輸出張量所有分量(元素)的乘積,以prod_b標識。
c = tf.reduce_sum(a, name="sum_c")#定義節點c,創建歸約求和Op,接接收一個N維張量輸入,輸出張量所有分量(元素)的求和,以sum_c標識。
d = tf.add(b,c, name="add_d")
sess = tf.Session()
out = sess.run(d)
writer = tf.summary.FileWriter('./my_graph', sess.graph)
writer.close()
sess.close()

TensorFlow可接收Python數值、布爾值、字符串、數組。單個數值轉化為0階張量(標量)。數值列表轉化為1階張量(向量)。由列表構成的列表轉化為2階張量(矩陣)。
TensorFlow數據類型:float32?float64?int8?int16?int32?int64?uint8?string?bool?cpmples64(實部32位虛部32位的64位復數)?qint8(有符號用于量化Op)?qint32?quint8(無符號用于量化Op)。

NumPy專為操作N維數組設計的科學計算軟件包,是數據科學通用語言。TensorFlow數據類型基于NumPy。任何NumPy數組都可以傳遞給TensorFlow Op。指定所需數據類型代價最小。NumPy沒有與tf.string字符串精確對應的數據類型。TensorFlow可以導入NumPy的字符串數組,但不能在NumPy中顯式指定dtype屬性。Session.run()方法返回的張量都是NumPy數組。不要用TensorFlow的數據類型初始化NumPy數組。推薦用NumPy手工指定Tensor對象。
張量Shape屬性,表示張量的維(階)數和每一維的長度。張量形狀是包含有序整數集的列表(list)或元組(tuple)。元素數量即維數,元素數值即每一維的長度。.shape()創建獲取張量形狀Op。

import tensorflow as tf
#指定0階張量(標量)形狀
s_0 = 1
#指定1階張量(向量)形狀
s_1_list = [1,2,3]
s_1_tuple = (1,2,3)
#指定2階張量(矩陣)形狀
s_2 = [[2,3],[2,3]]
#指定任意維數任意長度的張量形狀
s_any = None
shape = tf.shape(s_2, name="mystery_shape")#創建獲取張量形狀Op,接收一個張量,輸出張量形狀,以mystery_shape標識。
sess = tf.Session()
sess.run(shape)

Operation,Op,Tensor對象運算節點,返回張量。在Python中調用創建Op的構造方法,傳入所需所有Tensor輸入,以及正確創建Op所需屬性,返回創建Op的輸出(張量)句柄。name屬性用描述性字符串指代Op。

運算符重載,為了使運算更加簡潔。運算符有一個或多個操作對象為Tensor對象,TensorFlow Op被調用,添加到數據流圖。-x,.neg(),x中每個元素的相反數。~x,.logical_not(),x中每個元素的邏輯非,只適用dtype為tf.bool的Tensor對象。abc(),.abs(),x中每個元素的絕對值。x+y,.add(),x、y逐元素相加。x-y,.sub(),x、y逐元素相減。x-y,.sub(),x、y逐元素相減。xy,.multiply(),x、y逐元素相乘。x/y,.div(),x、y逐元素相除,整數張量執行整數除法,浮點數張量執行浮點數除法。x%y,.mod(),逐元素取模。x*y,.pow(),x逐元素為底,y逐元素為指數的冪。x<y,.less(),逐元素計算x<y真值。x<=y,.less_equal(),逐元素計算x<=y真值。x>y,.greater(),逐元素計算x>y真值。x>=y,.greater_equal(),逐元素計算x>=y真值。x&y,.logical_and(),逐元素計算x&y真值,元素dtype必須為tf.bool。x|y,.logical_or(),逐元素計算x|y真值,元素dtype必須為tf.bool。xy,.logical_xor(),逐元素計算xy真值,元素dtype必須為tf.bool。
運算符重載無法為Op指定name。==判斷兩個Tensor對象名是否引用同一個對象。.equal()和.not_equal()判斷張量值是否相同。

參考資料:
《面向機器智能的TensorFlow實踐》

歡迎加我微信交流:qingxingfengzi

我的微信公眾號:qingxingfengzigz

我老婆張幸清的微信公眾號:qingqingfeifangz

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • TF API數學計算tf...... :math(1)剛開始先給一個運行實例。tf是基于圖(Graph)的計算系統...
    MachineLP閱讀 3,552評論 0 1
  • 1「了解しました」 職場上面對上司經常會使用這一句,但其實這句是錯誤的敬語。想告訴上司“我知道了”,應該用「かしこ...
    日本邦閱讀 677評論 0 3
  • 彩袖殷勤捧玉鐘,當年拚卻醉顏紅。舞低楊柳樓心月,歌盡桃花扇底風。從別后,憶相逢。幾回魂夢與君同。今宵剩把銀釭照,猶...
    塵里微光閱讀 400評論 0 1
  • 雨還沒停... 淅淅瀝瀝的,從前天下午開始的,到現在還沒停呢。 我睜開眼,她要去上班了。一如既往...
    靜默吉祥閱讀 137評論 0 0
  • wozi壓力罐是利用罐內空氣的可壓縮性來調節和貯存水量并使之保持所需壓力的,所以又叫氣壓給水設備,其作用相當于水塔...
    JD319閱讀 285評論 0 0