Tensor總結

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把稠密矩陣轉換爲稀疏矩陣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章