關於numpy矩陣和矩陣索引的數字型別

2021-10-25 03:01:54 字數 3480 閱讀 5422

在訓練網路時,由於記憶體原因,把原始的歸一化**做了修改,不確定能否解決記憶體溢位的問題,但是發現了新的問題,其餘部分不改變,僅做此修改,網路的訓練效果頓時開始原地踏步。

images=images/

255#原始**

for i in

range

(images.shape[0]

):images[i]

=images[i]

/255

#更改後**

#其中images為讀入的2000*300*300的numpy陣列

上圖為修改後**實驗結果,其中eopch由25改為10.

確定問題發生在上述**段後,開始測試。

a=np.ones((1

,3,3

),dtype=

'uint8'

)b=np.ones((1

,3,3

),dtype=

'uint8'

)c=copy.deepcopy(a)

for i in

range

(a.shape[0]

):a[i]

=a[i]/2

b=b/

2print

('the c is :\n'

,c)print

('the a is :\n'

,a)print

('the b is :\n'

,b)`

得到結果如下

the c is:[

[[11

1][1

11][

111]

]]the a is:[

[[00

0][0

00][

000]

]]the b is:[

[[0.50.5

0.5]

[0.5

0.50.5][

0.50.5

0.5]

]]

顯然,索引矩陣元素進行除法操作時,矩陣元素和除數都是整型,得到結果也是整型,而對矩陣整體進行除法操作時,結果可能為浮點型。

對三階矩陣索引時,a[i]為二階矩陣,測試出現這種現象是否和矩陣的階數有關。**如下:

a=np.ones((1

,3),dtype=

'uint8'

)b=np.ones((1

,3),dtype=

'uint8'

)#,使用二階矩陣測試,其他部分不變,輸出結果如下

the c is:[

[111

]]

the a is:[

[000

]]

the b is:[

[0.5

0.50.5]]

#-----------------------------

a=np.ones((1

,1,3

,3),dtype=

'uint8'

)b=np.ones((1

,1,3

,3),dtype=

'uint8'

)#使用四階矩陣測試,其他部分不變,輸出結果如下

the c is:[

[[[1

11][

111]

[111

]]]]

the a is:[

[[[0

00][

000]

[000

]]]]

the b is:[

[[[0.5

0.50.5][

0.50.5

0.5]

[0.5

0.50.5]]

]]

發現不受矩陣階數影響,下面測試改變除(乘)數的不同情況。

for i in

range

(a.shape[0]

):a[i]

=a[i]

/2.0

b=b/

2.0#輸出結果如下

the c is:[

[111

]]the a is:[

[000

]]the b is:[

[0.5

0.50.5

]]

即使將除數寫為2.0,通過矩陣索引得到的結果依然是整型。

下面測試乘法

for i in

range

(a.shape[0]

):a[i]

=a[i]*1

b=b*

1#分別乘1,輸出結果如下

the c is:[

[111

]]the a is:[

[111

]]the b is:[

[111

]]#--------------------------

for i in

range

(a.shape[0]

):a[i]

=a[i]

*1.0

b=b*

1.0#分別乘1.0,輸出結果如下

the c is:[

[111

]]the a is:[

[111

]]the b is:[

[1.1

.1.]

]

如果被除數可以被整除,結論同上

a=

4*np.ones((1

,3),dtype=

'uint8')b=

4*np.ones((1

,3),dtype=

'uint8'

)c=copy.deepcopy(a)

for i in

range

(a.shape[0]

):a[i]

=a[i]/2

b=b/

2#輸出結果如下

the c is:[

[444

]]#乘4之後的結果,我們的被除數在這裡是整型

the a is:[

[222

]]the b is:[

[2.2

.2.]

]

原始矩陣為整型

矩陣索引

整個矩陣

除以整型

整型浮點型

除以浮點型

整型浮點型

乘整型整型

整型乘浮點型

整型浮點型

注:該結果不受矩陣階數的影響

numpy 矩陣 秩 Numpy 矩陣

機器學習中會用到大量的數學操作,而 numpy 計算庫使這些操作變得簡單,這其中就涉及到了 numpy 的矩陣操作,下面我們就來一起學習如何在 numpy 科學計算庫中進行矩陣的一些基本運算。定義矩陣使用 numpy 科學計算庫中的 mat 函式,如下所示 numpy.mat data,dtype ...

Numpy 陣列和矩陣

numpy包含了兩種基本型別 陣列ndarray和矩陣matrix numpy陣列中所有元素的型別必須是相同的 1 建立陣列 ndarray又叫多維陣列物件,建立陣列的最簡單的方式就是使用array函式,它接受一切序列化的物件 包括其他陣列 然後產生乙個新的含有傳入資料的numpy陣列 通過tupl...

關於numpy中的矩陣細節

a np.array 1,2 b np.array 1 2 print a b print a.dot b 輸出如下 1 2 2 4 5 a np.array 1,2 b np.array 1,2 c np.array 1 2 print b.dot a print a.dot c 這個時候輸出都是...