張量(tensor)的階、形狀、數(shù)據(jù)類型

今天學(xué)搭感知機(jī)的時(shí)候有一個(gè)函數(shù)newaxis,是用來給神經(jīng)元層增加一個(gè)啞節(jié)點(diǎn)。

第一層成為輸入層(Input Layer),最后一層稱為輸出層(Output Layer),中間一層成為隱藏層(Hidden Layers)。我們?yōu)檩斎雽雍碗[藏層增加一個(gè)偏倚單位(bias unit),就是啞結(jié)點(diǎn),方便計(jì)算。

numpy.newaxis從字面上是插入新的維度的意思

In [1]: np.linspace(1, 10, 10)
Out[1]: array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])

In [2]: np.linspace(1, 10, 10)[np.newaxis,:]
Out[2]: array([[ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]])

In [3]: np.linspace(1, 10, 10)[:,np.newaxis]
Out[3]:
array([[ 1.],
[ 2.],
[ 3.],
[ 4.],
[ 5.],
[ 6.],
[ 7.],
[ 8.],
[ 9.],
[ 10.]])

In [4]: np.linspace(1, 10, 10).shape
Out[4]: (10,)

In [5]: np.linspace(1, 10, 10)[np.newaxis,:].shape
Out[5]: (1, 10)

In [6]: np.linspace(1, 10, 10)[:,np.newaxis].shape
Out[6]: (10, 1)

可以看出np.newaxis分別是在行或列上增加維度,原來是(10,)的一維數(shù)組,在行上增加維度變成(1, 10)的二維數(shù)組,在列上增加維度變?yōu)?10,1)的二維數(shù)組。

ちょっと待って、這個(gè)二維數(shù)組是什么意思啊,看起來,也不像是二維的矩陣的意思。之前在word2vec里習(xí)慣了一個(gè)向量[1,0,...,0]的長度就是它的維數(shù)啊,那么numpy里的二維數(shù)組究竟是個(gè)啥?

NumPy 數(shù)組的維數(shù)稱為秩(rank),一維數(shù)組的秩為 1,二維數(shù)組的秩為 2,以此類推。
在 NumPy中,每一個(gè)線性的數(shù)組稱為是一個(gè)軸(axis),也就是維度(dimensions)。比如說,二維數(shù)組相當(dāng)于是兩個(gè)一維數(shù)組,其中第一個(gè)一維數(shù)組中每個(gè)元素又是一個(gè)一維數(shù)組。所以一維數(shù)組就是 NumPy 中的軸(axis),第一個(gè)軸相當(dāng)于是底層數(shù)組,第二個(gè)軸是底層數(shù)組里的數(shù)組。而軸的數(shù)量——秩,就是數(shù)組的維數(shù)。
很多時(shí)候可以聲明 axis。axis=0,表示沿著第 0 軸進(jìn)行操作,即對(duì)每一列進(jìn)行操作;axis=1,表示沿著第1軸進(jìn)行操作,即對(duì)每一行進(jìn)行操作。

秩,即軸的數(shù)量或維度的數(shù)量

在TensorFlow系統(tǒng)中,張量的維數(shù)來被描述為階.但是張量的階和矩陣的階并不是同一個(gè)概念.
矩陣的階表示矩陣大小,比如n階矩陣就是n*n的矩陣;而張量的階其實(shí)是維數(shù)的意思.
張量的階(有時(shí)是關(guān)于如順序或度數(shù)或者是n維)是張量維數(shù)的一個(gè)數(shù)量描述.比如,下面的張量(使用Python中l(wèi)ist定義的)就是2階.
t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
你可以認(rèn)為一個(gè)二階張量就是我們平常所說的矩陣,一階張量可以認(rèn)為是一個(gè)向量.對(duì)于一個(gè)二階張量你可以用語句t[i, j]來訪問其中的任何元素.而對(duì)于三階張量你可以用't[i, j, k]'來訪問其中的任何元素.

  • 例1:
    t = [[1, 2, 3], [4, 5, 6], ]就是2*3維的數(shù)組,是2階張量。
  • 例2:
    a2 = np.ones((2,3,4), dtype='int16')     # 創(chuàng)建2*3*4全1三維數(shù)組
    輸出:
    array([[[1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1]],
    
           [[1, 1, 1, 1],
            [1, 1, 1, 1],
            [1, 1, 1, 1]]], dtype=int16)
    

例2是2*3*4全1三維數(shù)組,也就是三階張量。在NumPy 數(shù)組沒有階的說法,但意思是一樣的。
階就相當(dāng)于ndarray中的秩,即軸的數(shù)量或維度的數(shù)量。

REF:

  1. newaxis
    np.newaxis
    https://cloud.tencent.com/developer/article/1406407
    https://www.cnblogs.com/onemorepoint/p/8110523.html

  2. NumPy 數(shù)組屬性 和tensor
    python中的矩陣、多維數(shù)組----numpy
    https://www.runoob.com/numpy/numpy-array-attributes.html
    張量的階、形狀、數(shù)據(jù)類型

  3. 線代小復(fù)習(xí)
    在數(shù)學(xué)中,矩陣的維數(shù)就是矩陣的秩
    把矩陣的秩弄明白了就明白矩陣的維數(shù)是什么了
    矩陣的秩就是矩陣中非零子式的最高階數(shù)
    簡單來說,就是把矩陣進(jìn)行初等行變換之后有非零數(shù)的行數(shù)
    例如,對(duì)一個(gè)3*5矩陣進(jìn)行初等行變換,
    最后變換成形如:
    ┌ 1 1 1 0 3 ┐
    │ 0 0 2 3 0 │
    └ 0 0 0 0 0 ┘
    這樣的階梯型矩陣后,數(shù)數(shù)其中非零行的行數(shù)就能知道矩陣的秩有多少了
    顯然,其中第一、二行為非零行,一共有兩行,所以秩r=2,也就是原矩陣維數(shù)為2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基礎(chǔ)篇NumPy的主要對(duì)象是同種元素的多維數(shù)組。這是一個(gè)所有的元素都是一種類型、通過一個(gè)正整數(shù)元組索引的元素表格(...
    oyan99閱讀 5,301評(píng)論 0 18
  • 先決條件 在閱讀這個(gè)教程之前,你多少需要知道點(diǎn)python。如果你想從新回憶下,請(qǐng)看看Python Tutoria...
    舒map閱讀 2,753評(píng)論 1 13
  • 前言 numpy是支持 Python語言的數(shù)值計(jì)算擴(kuò)充庫,其擁有強(qiáng)大的高維度數(shù)組處理與矩陣運(yùn)算能力。除此之外,nu...
    開發(fā)者也閱讀 3,407評(píng)論 0 35
  • NumPy是Python中關(guān)于科學(xué)計(jì)算的一個(gè)類庫,在這里簡單介紹一下。 來源:https://docs.scipy...
    灰太狼_black閱讀 1,337評(píng)論 0 5
  • 今天去看了HCg翻倍情況,醫(yī)生說數(shù)值不錯(cuò),但是我已經(jīng)從粉絲變成了水紅色,好擔(dān)心!寶寶你要加油!努力的成長媽媽跟你一起努力
    愛喝豆?jié){的橙子閱讀 117評(píng)論 0 0

友情鏈接更多精彩內(nèi)容