今天學搭感知機的時候有一個函數newaxis,是用來給神經元層增加一個啞節點。
第一層成為輸入層(Input Layer),最后一層稱為輸出層(Output Layer),中間一層成為隱藏層(Hidden Layers)。我們為輸入層和隱藏層增加一個偏倚單位(bias unit),就是啞結點,方便計算。
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,)的一維數組,在行上增加維度變成(1, 10)的二維數組,在列上增加維度變為(10,1)的二維數組。
ちょっと待って、這個二維數組是什么意思啊,看起來,也不像是二維的矩陣的意思。之前在word2vec里習慣了一個向量[1,0,...,0]的長度就是它的維數啊,那么numpy里的二維數組究竟是個啥?
NumPy 數組的維數稱為秩(rank),一維數組的秩為 1,二維數組的秩為 2,以此類推。
在 NumPy中,每一個線性的數組稱為是一個軸(axis),也就是維度(dimensions)。比如說,二維數組相當于是兩個一維數組,其中第一個一維數組中每個元素又是一個一維數組。所以一維數組就是 NumPy 中的軸(axis),第一個軸相當于是底層數組,第二個軸是底層數組里的數組。而軸的數量——秩,就是數組的維數。
很多時候可以聲明 axis。axis=0,表示沿著第 0 軸進行操作,即對每一列進行操作;axis=1,表示沿著第1軸進行操作,即對每一行進行操作。
秩,即軸的數量或維度的數量
階
在TensorFlow系統中,張量的維數來被描述為階.但是張量的階和矩陣的階并不是同一個概念.
矩陣的階表示矩陣大小,比如n階矩陣就是n*n的矩陣;而張量的階其實是維數的意思.
張量的階(有時是關于如順序或度數或者是n維)是張量維數的一個數量描述.比如,下面的張量(使用Python中list定義的)就是2階.
t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
你可以認為一個二階張量就是我們平常所說的矩陣,一階張量可以認為是一個向量.對于一個二階張量你可以用語句t[i, j]來訪問其中的任何元素.而對于三階張量你可以用't[i, j, k]'來訪問其中的任何元素.
- 例1:
t = [[1, 2, 3], [4, 5, 6], ]
就是維的數組,是2階張量。
- 例2:
a2 = np.ones((2,3,4), dtype='int16') # 創建2*3*4全1三維數組 輸出: 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是全1三維數組,也就是三階張量。在NumPy 數組沒有階的說法,但意思是一樣的。
階就相當于ndarray中的秩,即軸的數量或維度的數量。
REF:
newaxis
np.newaxis
https://cloud.tencent.com/developer/article/1406407
https://www.cnblogs.com/onemorepoint/p/8110523.htmlNumPy 數組屬性 和tensor
python中的矩陣、多維數組----numpy
https://www.runoob.com/numpy/numpy-array-attributes.html
張量的階、形狀、數據類型線代小復習
在數學中,矩陣的維數就是矩陣的秩
把矩陣的秩弄明白了就明白矩陣的維數是什么了
矩陣的秩就是矩陣中非零子式的最高階數
簡單來說,就是把矩陣進行初等行變換之后有非零數的行數
例如,對一個3*5矩陣進行初等行變換,
最后變換成形如:
┌ 1 1 1 0 3 ┐
│ 0 0 2 3 0 │
└ 0 0 0 0 0 ┘
這樣的階梯型矩陣后,數數其中非零行的行數就能知道矩陣的秩有多少了
顯然,其中第一、二行為非零行,一共有兩行,所以秩r=2,也就是原矩陣維數為2