zoukankan      html  css  js  c++  java
  • 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)

    用例:

    ————————————————
    版权声明:本文为CSDN博主「o_Eagle_o」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zenghaitao0128/java/article/details/78556535

  • 相关阅读:
    Andoid自动判断输入是电话,网址或者Email的方法--Linkify
    Activity LifeCycle
    Android Log详解(Log.v,Log.d,Log.i,Log.w,Log.e)
    Android应用自动更新功能的实现!
    Android Layout: TableLayout
    Android实现动态改变屏幕方向(Landscape & Portrait)
    Android Intent 总结
    Android中Intent传递对象的两种方法:Serializable & Parcelable
    Activity的setResult方法
    css3中的calc()
  • 原文地址:https://www.cnblogs.com/vincent-sh/p/12853829.html
Copyright © 2011-2022 走看看