理解張量及張量的Rank和Shape

理解張量及張量的Rank和Shape

入門TensorFlow的第一道攔路虎就是對Tensor的理解。 以下是我在理解張量的過程中的一些總結。

什麼是張量

這是bilibili搬運youtube的一個視頻,很直觀的解釋了張量的含義。

張量是對標量,矢量,矩陣的推廣。張量的表達看起來像是數組,其實每個值是在對應空間上的分量的大小。基向量和分量一起形成了張量的表達,他在物理學上的優點是,當基向量發生變化的時候(座標系發生變化或者說是觀察方向發生了變化),對應的分量也會發生變化,但整個張量卻能保持不變。

下圖是對張量從直觀上給出的示意。一階張量可以理解成一個向量,二階張量可以理解成矩陣,三階張量可以理解成立方體,四階張量可以理解成立方體組成的一個向量,五階張量可以理解成立方體組成的矩陣,依次類推。

什麼是Rank

Rank就是上文所說的階。他是指這個張量擁有的基底向量的數量,也就是他的方向的數量。從上圖中其實能看明白爲什麼是一階、二階、三階。下圖是一個示意。

在實際操作中,可以理解成[的深度。例如:

rank=1: [0,1,2]

rank=2: [[0,1],[2,3]]

rank=3: [[[0,1],[2,3]],[[4,5],[6,7]]]

什麼是Shape

shape是形狀,他是指明每一層有多少個元素。比如[2,3,4]是指第一層2個元素,第二層3個元素,第三層4個元素,通過這個我們就可以知道這個張量一共有2 × 3 × 4=24 個元素。上面的rank=3的張量,他的shape是[4,2]。下面這個代碼也能說明問題。

1
2
3
4
5
import tensorflow as tf
# 定義了一個張量,有6個元素,設置他的形狀是[2.3]
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2,3])
with tf.Session() as session:
    print(session.run(a))

打印的結果是

[[1 2 3]
[4 5 6]]

END

轉自:https://www.lefer.cn/posts/34475/

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