張量是TensorFlow最主要的數據結構,張量是數學領域的概念,具體到TensorFlow中,一個張量就是一個張量類的實例,是綁定了相關運算的一個特定類型的多維數組。
1、張量的屬性:
- 所有張量都有一個靜態的類型和動態的維數,也就是說你可以實時的改變一個張量的內部結構。
- 只有張量類型的對象才能在計算圖的節點中傳遞。
- 張量的階(rank):表示張量的維度,但跟矩陣的秩又不太一樣。它表示張量的維度的質量。
階 | 數學表示 |
0 | 標量(Scalar) |
1 | 向量(Vector) |
2 | 矩陣(Matrix) |
3 | 3維張量(3-tensor) |
n | n維張量(n-tensor) |
- 張量的形狀(shape):形如[[,][,]] ,或0階:比如單個數字2。下面舉個例子:
import tensorflow as tf
tens1 = tf.constant([[[1,2],[2,3]],[[3,4],[5,6]]])
sess = tf.session()
print(sess.run(tens1)[1,1,0])
#輸出結果爲5
#[1,1,0] 其中第一個1表示取[[3,4],[5,6]]
#第二個1表示取[5,6]
#第三個0表示取5
#所以結果爲5
- 張量的數據類型:這裏主要說一下tf.string,可變長度的字節數組,每一個張量元素都是一個字節數組。
2、張量的創建
- TensorFlow和numpy是可互操作的,通常調用eval()函數會返回numpy對象。該函數可以用作標準數值工具。(注:張量對象只是一個操作結果的符號化句柄,它並不持有該操作的結果。所以可以使用eval()方法來獲取實際的值,等價於Session.run(tensor_to_eval) )
- tf.convert_to_tensor()方法將python對象轉化爲tensor對象,可以是tensor對象、numpy數組、Python列表、Python標量。