Tensor 在TF中用來存儲數據,有點像Spark 中的RDD,用來表示一個集合,裏面可能在計算後纔有數據,它是TF中常用的數據結構,作爲網絡層的輸入和輸出。
把python中的數據變成一個Tensor:
import tensorflow as tf
print(tf.constant([[1,1], [2,2]]))
輸出:
tf.Tensor(
[[1 1]
[2 2]], shape=(2, 2), dtype=int32)
生成服從正態分佈的隨機數:
tensor_random = tf.random.truncated_normal(shape=[4, 3], mean=0, stddev=1)
print(tensor_random)
輸出:
tf.Tensor(
[[-0.6169643 -0.48704767 0.64570683]
[ 0.854015 -0.07537854 1.2956442 ]
[ 1.3869987 -0.12490827 0.5543784 ]
[-1.2535942 0.82831544 -1.324502 ]], shape=(4, 3), dtype=float32)
還有一類型變量tf.Variable,可以通過Tensor構造:
var1 = tf.Variable(tensor_random, name='var1')
print(var1)
輸出:
<tf.Variable 'var1:0' shape=(4, 3) dtype=float32, numpy=
array([[-0.6169643 , -0.48704767, 0.64570683],
[ 0.854015 , -0.07537854, 1.2956442 ],
[ 1.3869987 , -0.12490827, 0.5543784 ],
[-1.2535942 , 0.82831544, -1.324502 ]], dtype=float32)>
在tf1中使用變量前需要先初始化:
sess = tf.Session()
sess.run(tf.global_variables_initializer()) # 初始化
print(sess.run(var1))
表示稀疏矩陣使用tf.SparseTensor,有3個參數來描述稀疏矩陣:
- indices 描述有值的位置的下標
- values 描述各個有值位置的值
- dense_shape 形狀
例如定一個2行32列,在第一行的第二列和第二行的第一列有值,分別是1,2:
sparse_tensor = tf.SparseTensor(indices=[[0, 1], [1, 0]], values=[1, 2], dense_shape=[2, 32])
print(tf.sparse.to_dense(sparse_tensor)) # 稀疏矩陣轉換稠密矩陣
輸出:
tf.Tensor(
[[0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]], shape=(2, 32), dtype=int32)
還有方法tf.sparse.from_dense
把稠密矩陣轉換爲稀疏矩陣。