1. 程式人生 > >TF random_normal和Python numpy random.normal的用法

TF random_normal和Python numpy random.normal的用法

先看TF
tf.random_normal()函式用於從服從指定正太分佈的數值中取出指定個數的值。
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

再看NP
np.random.normal()給出均值為loc,標準差為scale的高斯隨機數(場).
numpy.random.normal(loc=0.0, scale=1.0, size=None)

所謂正態分佈高斯分佈,所以二者一回事
mean
loc均值(或稱期待值)
stddev
scale標準差
shape
size輸出形狀,二者在處理這個引數時候(a,b)

[a,b],其中,np的normal對引數格式要求更靈活一些。
比如建立隨機數的一行兩列陣列:
np.random.normal([2])==np.random.normal((2))==np.random.normal(0,1,2)注意最後一種用法必須帶上前面兩個引數,否則傳遞引數時候會把2當作均值傳遞
而tf的random_normal對shape的要求不能是數字,必須為[]或()格式

再探究一下形狀引數的規律,看下面程式碼

a=np.random.normal(0,1,(2,1))
b=np.random.normal(0,1,(1,2))
c=np.random.normal(0,1,(2))
print(a)
print(a.shape)
print(b)
print(b.shape)
print(c)
print(c.shape)

程式輸出如下

[[ 1.11843359]
 [-0.69801129]]
(2, 1)
[[-0.87110089 -0.46089345]]
(1, 2)
[ 0.88227522 -0.26728542]
(2,)

a,b是二維的矩陣,c是一維的矩陣(嚴格說一維的不是矩陣)