np.random.rand()函数与数组填充np.pad()

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)

猜你喜欢

转载自blog.csdn.net/BenjaminYoung29/article/details/85259521