np.random.rand()函式與陣列填充np.pad()
阿新 • • 發佈:2019-01-09
np.random.rand(d0,d1,d2……dn)
注:使用方法與np.random.randn()函式相同 ,但rand返回的是均勻分佈的樣本值,randn返回的是正態分佈的樣本值
作用:
通過本函式可以返回一個或一組服從“0~1”均勻分佈的隨機樣本值。隨機樣本取值範圍是[0,1),不包括1。
1)當函式括號內沒有引數時,則返回一個浮點數;
2)當函式括號內有一個引數時,則返回秩為1的陣列,不能表示向量和矩陣;
3)當函式括號內有兩個及以上引數時,則返回對應維度的陣列,能表示向量或矩陣;
import numpy as np np.random.seed(1) np.random.rand() #0.417022004702574 np.random.rand(1) #array([0.417022]) np.random.rand(2) #array([0.417022 , 0.72032449]) np.random.rand(3) #array([4.17022005e-01, 7.20324493e-01, 1.14374817e-04]) np.random.rand(3,1) #array([[4.17022005e-01], [7.20324493e-01], [1.14374817e-04]]) #3*1的矩陣 np.random.rand(3,3) #array([[4.17022005e-01, 7.20324493e-01, 1.14374817e-04], [3.02332573e-01, 1.46755891e-01, 9.23385948e-02], [1.86260211e-01, 3.45560727e-01, 3.96767474e-01]]) np.random.rand(4,3,2) #array([[[4.17022005e-01, 7.20324493e-01], [1.14374817e-04, 3.02332573e-01], [1.46755891e-01, 9.23385948e-02]], [[1.86260211e-01, 3.45560727e-01], [3.96767474e-01, 5.38816734e-01], [4.19194514e-01, 6.85219500e-01]], [[2.04452250e-01, 8.78117436e-01], [2.73875932e-02, 6.70467510e-01], [4.17304802e-01, 5.58689828e-01]], [[1.40386939e-01, 1.98101489e-01], [8.00744569e-01, 9.68261576e-01], [3.13424178e-01, 6.92322616e-01]]]) #4*3*2的矩陣。如一個3,2大小的4通道圖, 注意最前面是通道數。
np.pad()
用於填充np陣列。在深度學習時為了卷積時矩陣大小不會一直變小,且邊緣的元素不會被忽視,通常需要在原矩陣的周圍填充0。
pad第一個引數為待填充的陣列。中間引數為需要填充的形狀,(2,2)表示陣列前填充2個,後面2個。多維陣列則需要有多個。比如3維陣列,最後一維(圖的depth)不需要填充,則((2,2),(2,2),(0,0)),最後一個引數為填充的方法。'constant’連續一樣的值填充,有關於其填充值的引數。constant_values=(x, y)時前面用x填充,後面用y填充。缺引數是為0000。。。
import numpy as np np.random.seed(1) A=np.random.rand(4,3,2)# 4*3的圖,2通道。 np.pad(A, ((1,1),(1,1),(0,0)),'constant')
注:雖然輸出時跟理解上的矩陣不一樣, 但一般都是生成np.random.randn(m, nH, nW, nC)這樣的順序。pad時也是中間兩個維度需要Pad。兩邊都為(0,0)