在訓練網路時,由於記憶體原因,把原始的歸一化**做了修改,不確定能否解決記憶體溢位的問題,但是發現了新的問題,其餘部分不改變,僅做此修改,網路的訓練效果頓時開始原地踏步。
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 這個時候輸出都是...