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

wh7577發表於2021-09-09

正態分佈(Normal distribution),也稱“常態分佈”,又名高斯分佈(Gaussian distribution)。

正態曲線呈鍾型,兩頭低,中間高,左右對稱因其曲線呈鐘形,因此人們又經常稱之為鐘形曲線。

在TF中會大量使用到正態分佈,熟練的使用它,也是使用TF的基本功之一。下面來看一下在Python中如何使用。

一維正態分佈

圖片描述

正態分佈公式.PNG

用numpy來獲取一個標準正態分佈的樣例

num = 100000mu = 0sigma = 1s = 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 = 40000mean = 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 = 40000mean = np.array([4,8])
cov = np.eye(2)
ms = np.random.multivariate_normal(mean, cov, num)

圖片描述

圓心在(4,8).png

那麼cov也透過實驗來看一下,

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

圖片描述

[[5,0],[0,1]]



作者:安安爸Chris
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2817204/,如需轉載,請註明出處,否則將追究法律責任。

相關文章