美文网首页我爱编程
【TensorFlow基本功】正太分布的使用

【TensorFlow基本功】正太分布的使用

作者: 安安爸Chris | 来源:发表于2018-08-07 20:11 被阅读0次

    正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution)。

    正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。

    在TF中会大量使用到正态分布,熟练的使用它,也是使用TF的基本功之一。下面来看一下在Python中如何使用。

    一维正态分布

    正态分布公式.PNG

    用numpy来获取一个标准正态分布的样例

    num = 100000
    mu = 0
    sigma = 1
    s = np.random.normal(mu, sigma, num)
    

    一维正太分布如上面定义所说,正如一个“钟形”


    标准正太分布.png

    或者如下两者

    s = sigma * np.random.randn(num) + mu
    

    s = sigma * np.random.standard_normal(num) + mu
    

    效果都如之前的图片

    mu控制函数中心位置左右移动,如下mu=6的场景


    mu=6.png

    sigma=10的场景


    sigma=10.png

    可见,mu为正数,函数曲线向右移动,反之,向左移动;sigma越大,分布越宽;sigma越小分布越窄。

    记住这个特性,在获取一维正太分布数据时很有帮助。

    二维正太分布

    二维正太分布的公式如下,


    二维正态分布公式.PNG

    二维正太分布使用不一样的numpy函数,multivariate_normal

    num = 40000
    mean = np.array([0,0])
    cov = np.eye(2)
    ms = np.random.multivariate_normal(mean, cov, num)
    

    二维标准正太分布如下,不在是一个“钟”,而像一个“圆”


    二维标准正太分布.png

    这里的参数也有变化。
    mean表示二维数组每一维的均值;是一个(1,2)矩阵。
    cov表示二维数组的协方差;是一个(2,2)矩阵。

    可以看出来mean是圆的圆点,那么是不是改变了mean,圆就会发生移动呢? 我们试一下。

    num = 40000
    mean = np.array([4,8])
    cov = np.eye(2)
    ms = np.random.multivariate_normal(mean, cov, num)
    
    圆心在(4,8).png

    那么cov协方差代表的意义也通过实验来看一下,

    num = 40000
    mean = np.array([0,0])
    cov = np.array([[5,0],[0,1]])
    ms = np.random.multivariate_normal(mean, cov, num)
    
    [[5,0],[0,1]]

    相关文章

      网友评论

        本文标题:【TensorFlow基本功】正太分布的使用

        本文链接:https://www.haomeiwen.com/subject/ckravftx.html