標籤:

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

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

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

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

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 tfnn#指定0階張量(標量)形狀nns_0 = 1nn#指定1階張量(向量)形狀nns_1_list = [1,2,3]nns_1_tuple = (1,2,3)nn#指定2階張量(矩陣)形狀nns_2 = [[2,3],[2,3]]nn#指定任意維數任意長度的張量形狀nns_any = Nonennshape = tf.shape(s_2, name="mystery_shape")#創建獲取張量形狀Op,接收一個張量,輸出張量形狀,以mystery_shape標識。nnsess = tf.Session()nnsess.run(shape)n

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逐元素相減。x*y,.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。x^y,.logical_xor(),逐元素計算x^y真值,元素dtype必須為tf.bool。

運算符重載無法為Op指定name。==判斷兩個Tensor對象名是否引用同一個對象。.equal()和.not_equal()判斷張量值是否相同。

參考資料:

《面向機器智能的TensorFlow實踐》

歡迎加我微信交流:qingxingfengzi

我的微信公眾號:qingxingfengzigz

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

推薦閱讀:

TensorFlow 官方文檔中文版 [W3Cschool]
CS224n異聞錄(二)
Tensorflow on Spark爬坑指南
如何看待Face++出品的小型化網路ShuffleNet?

TAG:TensorFlow | 张量 |