Numpy 学习—np.random.randn()、np.random.rand() 和 np.random.randint()

在机器学习和神经网络中,常常会利用 Numpy 库中的随机函数来生产随机数,比如随机初始化神经网络中的参数权重 W(备注:W 是不能全部初始化为 0 的,这样会引起 symmetry breaking problem,这样隐藏层设置多个神经元就没有任何意义了)。 
在 Numpy 库中,常用使用 np.random.rand()、np.random.randn() 和 np.random.randint() 随机函数。这几个函数的区别如下:

(1)np.random.randn() 函数

语法:

np.random.randn(d0,d1,d2……dn) 
1) 当函数括号内没有参数时,则返回一个浮点数; 
2)当函数括号内有一个参数时,则返回秩为 1 的数组,不能表示向量和矩阵; 
3)当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵; 
4)np.random.standard_normal()函数与 np.random.randn() 类似,但是 np.random.standard_normal()的输入参数为元组(tuple). 
5)np.random.randn() 的输入通常为整数,但是如果为浮点数,则会自动直接截断转换为整数。

作用:

通过本函数可以返回一个或一组服从标准正态分布的随机样本值。

特点:

标准正态分布是以 0 为均数、以 1 为标准差的正态分布,记为 N(0,1)。对应的正态分布曲线如下所示,即 
这里写图片描述

标准正态分布曲线下面积分布规律是:

在 - 1.96~+1.96 范围内曲线下的面积等于 0.9500(即取值在这个范围的概率为 95%),在 - 2.58~+2.58 范围内曲线下面积为 0.9900(即取值在这个范围的概率为 99%). 
因此,由 np.random.randn() 函数所产生的随机样本基本上取值主要在 - 1.96~+1.96 之间,当然也不排除存在较大值的情形,只是概率较小而已。

用例: 
这里写图片描述

应用场景:

在神经网络构建中,权重参数 W 通常采用该函数进行初始化,当然需要注意的是,通常会在生成的矩阵后面乘以小数,比如 0.01,目的是为了提高梯度下降算法的收敛速度。 
W = np.random.randn(2,2)*0.01

(2) np.random.rand() 函数

语法:

np.random.rand(d0,d1,d2……dn) 
注:使用方法与 np.random.randn() 函数相同 
作用: 
通过本函数可以返回一个或一组服从 “0~1” 均匀分布的随机样本值。随机样本取值范围是 [0,1),不包括 1。 
应用:在深度学习的 Dropout 正则化方法中,可以用于生成 dropout 随机向量(dl),例如(keep_prob 表示保留神经元的比例):dl = np.random.rand(al.shape[0],al.shape[1]) < keep_prob

用例: 
这里写图片描述

(3) np.random.randint() 函数

语法:

numpy.random.randint(low, high=None, size=None, dtype=’l’) 
输入: 
low—–为最小值 
high—- 为最大值 
size—–为数组维度大小 
dtype—为数据类型,默认的数据类型是 np.int。 
返回值: 
返回随机整数或整型数组,范围区间为 [low,high),包含 low,不包含 high; 
high 没有填写时,默认生成随机数的范围是 [0,low)

用例: 
这里写图片描述

转载自:https://blog.csdn.net/mengenqing/article/details/80615668

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值