基本概念
TensorFlow 中的 Tensor 表示張量,是多維數組、多維列表,用階表示張量的維數。 0 階張量叫做標量,表示的是一個單獨的數,如 123; 1 階張量叫作向量,表示的是一個一維數組如[1,2,3]; 2 階張量叫作矩陣,表示的是一個二維數組,它可以有 i 行 j 列個元素,每個元素用它的行號和列號共同索引到,如在[[1,2,3],[4,5,6],[7,8,9]]中, 2 的索引即爲第 0 行第 1 列。張量的階數與方括號的數量相同, 0 個方括號即爲 0 階張量, 1 個方括號即爲 1 階張量。故張量可以表示0 階到 n 階的數組。
也可以通過 reshape 的方式得到更高維度數組,舉例如下:
import tensorflow as tf
import numpy as np
c = np.arange(24).reshape(2,4,3)
print(c)
張量元素的數據類型
創建張量
創建Tensor對象,張量由Tensor類實現,每個張量都是一個Tensor對象
tf.constant()函數:創建張量
tf.constant(value, dtype, shape)
1.value:(張量內容)數字/Python列表/NumPy數組
2.dtype: 元素的數據類型(可選)
3.shape: 張量的形狀
創建張量有若干種不同的方法:
(1)參數爲Python列表,不指定數據類型
import tensorflow as tf
a=tf.constant([[1,2],[3,4],[4,6]])
print(a)
會輸出張量內容、形狀與數據類型。創建了一個二維張量,第一個維度有兩個元素,第二個維度
有三個元素,並且數據類型默認爲int32
(2)參數爲Python列表,指定數據類型
a=tf.constant([[1,2],[3,4],[4,6]],dtype=tf.int64)
print(a)
此時dtype變成了我們指定的int64,其餘都一樣。
注:去掉 dtype 項,不同電腦環境不同導致默認值不同,可能導致後續程序 bug,所以我建議創建張量的時候,最好帶上數據類型,以免造成不必要的麻煩。
(3)參數爲數字
a=tf.constant(1.0)
(4)參數爲字符串
a=tf.constant("Hello,World")
(5)參數爲bool類型
a=tf.constant(True)
bool值可以放入數組中,再傳給創建張量函數
a=tf.constant([True,False])
(6)參數爲NumPy數組
此時可以通過如下函數將 numpy 格式化爲 Tensor 格式: tf. convert_to_tensor(數據名, dtype=數據類型(可選))
a = np.arange(0, 5)
b = tf.convert_to_tensor( a, dtype=tf.int64 )
print(a)
print(b)
可見,將 numpy 格式的 a 轉換成了 Tensor 格式的 b。
(7)其它創建張量的方法
7-1. tf. zeros(維度)創建全爲 0 的張量
a = tf.zeros([2, 3])
創建了一個二維張量,第一個維度有兩個元素,第二個維度有三個元素,元素的內容全是 0
7-2. tf.ones(維度)創建全爲 1 的張量
a=tf.ones(4)
創建了一個一維張量,裏邊有 4 個元素,內容全是 1
7-3. tf. fill(維度,指定值)創建全爲指定值的張量
tf.fill([2, 2], 9)
創建了一個兩行兩列的二維張量,第一個維度有兩個元素,第二個維度也有兩個元素,內容都是 9。