在進行機器學習和深度學習中,我們會經常用到np.random.seed(),利用隨機數種子,使得每次生成的隨機數相同。
numpy.randn.randn(d0,d1,...,dn)
- randn函數根據給定維度生成大概率在(-2.58~+2.58)之間的數據
- randn函數返回一個或者一組樣本,具有標准正態分布
- dn表示每個維度
- 返回值為指定維度的array
import numpy as np a = np.random.randn(2,4) #4*2矩陣 print(a) b = np.random.randn(4,3,2) #shape:4*3*2 print(b)
我們將帶着兩個問題進行np.random.seed()的學習:
1.np.random.seed()是否一直有效?
2.np.random.seed(Argument)的參數作用?
E.G.實驗
# -*- coding: utf-8 -*- # @Time : 2019/10/26 20:57 # @Author : BaoBao # @Mail : baobaotql@163.com # @File : random.seed.py # @Software: PyCharm import numpy as np if __name__ == '__main__': i = 0 while (i < 6): if (i < 3): np.random.seed(0) print(np.random.randn(1, 5)) else: print(np.random.randn(1, 5)) pass i += 1 print("-------------------") i = 0 while (i < 2): print(np.random.randn(1, 5)) i += 1 print(np.random.randn(2, 5)) print("---------reset----------") np.random.seed(0) i = 0 while (i < 8): print(np.random.randn(1, 5)) i += 1
運行截圖:
可以看出,np.random.seed()對后面的隨機數一直有效。
兩次利用random.seed()后,即使跳出循環以后,生成隨機數的結果依然相同。第一次跳出while循環后,進入第二次while循環,
得到的兩個隨機數組確實和加了隨機數種子不一樣。但是后面的加入隨機數種子的,八次循環中的結果和前面的結果是一樣的。說明,
隨機數種子對后面的結果一直有影響。同時,加入隨機數種子以后,后面的數組都是按一定的順序生成的。
E.G.隨機數種子參數的作用
# -*- coding: utf-8 -*-
# @Time : 2019/10/26 20:57
# @Author : BaoBao
# @Mail : baobaotql@163.com
# @File : random.seed.py
# @Software: PyCharm
import numpy as np if __name__ == '__main__': i = 0 np.random.seed(0) while (i < 3): print(np.random.randn(1, 5)) i += 1 i = 0 print("---------------------") np.random.seed(1) i = 0 while (i < 3): print(np.random.randn(1, 5)) i += 1
運行截圖:
當隨機數種子參數為0和1時,生成的隨機數結果相同。說明該參數指定了一個隨機數生成的起始位置。每個參數對應一個位置。
並且在該參數確定后,其后面的隨機數的生成順序也就確定了。所以,隨機數種子的參數怎么選擇?這個參數只是確定一下隨機數的起始位置,可隨意分配.
對你有幫助就支付寶請我喝可樂叭~~~