最通俗的語言解釋什麼是張量,最近有混亂和不理解的可以詳細看一下,耐心看就行。emmmm我今天遇到了個問題把我一下子亂了所以再回憶一下基礎。
一、一維張量
從一維開始:
tf.constant(
[1.0 , 3.0 , 6.0]
)
表示:生成乙個一維張量(向量),shape是1行3列即shape是[3]。為什麼不是[1,3]呢?因為這個張量是一維的,只有乙個維度,你可以把維度和shape理解為乙個key:value的關係,就是乙個維度是擁有值的,這個值在張量中體現為 的層數。
shape為[1,3]的應該是:tf.constant([[1.0 , 5.0 , 9.0]])
二、二維張量
tf.constant(
[[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]
])
如上,這就是乙個二維張量,看乙個tensor有多少個維度,首先從最裡面層的[或者]來數,有多少個層的[或者]就是有多少個維度,所以這裡是二維。
從[或者]來看,可以判斷有兩個維度,那如何判斷這裡的shape呢?
首先從最裡面乙個維度來看,它是有3個元素的,如[1.,2.,3.](注意,這個一般代表有幾個特徵,特徵可以理解為datafame的列),所以最裡面乙個維度為3,其次最裡面這個維度有3個樣本,所以最外面的維度是3.
我這裡為什麼要說最裡面和最外面呢?而不說第乙個維度、第二個維度呢?因為維度可以是相對的,你把最裡面的維度叫做第乙個維度也可以,把最外面的維度叫做第乙個維度也可以。這個並無大礙。這裡我們以最裡面成為第乙個維度,最外面成為第二個維度。
三、三維張量
先說,下面是乙個三維張量:
tf.constant([[
[1., 1.], [2., 2.]
], [
[3., 3.], [4., 4.]]]
)
其返回值是:
700, shape=(2
,2,2
), dtype=float32, numpy=
array([[
[1.,
1.],
[2.,
2.]]
,[[3
.,3.
],[4
.,4.
]]], dtype=float32)
>
如何理解呢?首先從[的數量可以判斷這個張量是三維的,其次,第乙個維度有2個值,如1.和1.,所以第乙個維度是2,第二個維度也是有兩個值,如[1.,1.]和[2.,2.],所以第二個維度是2,再看第三個維度,第三個維度有兩個值,分別是:
[[1.,1.],[2.,2.]] 和[[3.,3.],[4.,4.]]
所以第三個維度是2。所以這個張量有3個維度,3個維度的值分別是2,2,2.即shape是(2,2,2)。注意:這裡的維度index是從裡往外算的。
四、超過三維
這裡不舉例了,反正就是一直堆疊到陣列中即可。
比如:
tf.constant([[
[[1.
,1.]
,[2.
,2.]
],[[
3.,3
.],[
4.,4
.]]]
])
這個就是乙個四維向量!
返回值是:
701, shape=(1
,2,2
,2), dtype=float32, numpy=
array([[
[[1.
,1.]
,[2.
,2.]
],[[
3.,3
.],[
4.,4
.]]]
], dtype=float32)
>
分析一下:分析三維的時候那個三維張量的shape是(2,2,2),然後四維的話加了乙個層,可以這樣理解:就是把三維張量的第三維算作第四維的值,有多少個第三維,那麼第四維的shape值就是多少。
這麼這裡是有這麼多個三維,如下:
[[[
1.,1
.],[
2.,2
.]],
[[3.
,3.]
,[4.
,4.]
]]
以上是乙個三維張量,而四維張量的第四維度只有這麼乙個三維,注意喔,上面這個三維看作四維的乙個值!!! 所以因為第四維只有乙個值,所以自然第四維的shape值就是1了。
emmm說好的不舉例,又舉例了。。。
以上就是第四維的情況。然後n維的話,也按照這個思路和規律去理解。
注意:!
在tf的張量列印出來的格式中,他不是從裡到外數張量的,他是從外到裡數的。
案例:
tf.constant([[
[[1., 1.], [2., 2.]
], [
[3., 3.], [4., 4.]]]
])
列印結果:
(1, 2, 2, 2), dtype=float32, numpy=
array([[
[[1., 1.],
[2., 2.]
], [
[3., 3.],
[4., 4.]]]
], dtype=float32)
>
這裡的shape提示為(1,2,2,2),如果shape從左往右來看,那麼他在張量裡面數的時候是從外往里數的。晉記!
如果shape從右往左來看,那麼他在張量裡面數的時候是從裡往外數的。晉記!
通俗理解張量tensor
我們的目的是要用數學量來表示物理量,可是標量加上向量,都不足以表達所有的物理量,所以就需要擴大數學量的概念,張量就出現了。幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,我們可以將標量視為零階張量,向量視為一階張量,那麼矩陣就是二階張量。張量的嚴格定義是利用線性對映來描述的。與向量相類...
通俗理解張量 Tensor
江湖人稱冷不丁 關注22018.07.20 17 20 26 字數 1,500 閱讀 49,100 我們的目的是要用數學量來表示物理量,可是標量加上向量,都不足以表達所有的物理量,所以就需要擴大數學量的概念,張量就出現了。幾何代數中定義的張量是基於向量和矩陣的推廣,通俗一點理解的話,我們可以將標量視...
對張量的理解,Tensor
講解contiguous,因為view需要連續的,但是現在reshape已經實現了congtiguous和view功能。個人覺的這個解釋很好 什麼是張量 tensor實際上就是乙個多維陣列 multidimensional array 其目的是能夠創造更高維度的矩陣 向量。為什麼用variable ...