日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Python?numpy中np.random.seed()的詳細(xì)用法實(shí)例_python

作者:脫發(fā)的小猿 ? 更新時(shí)間: 2022-10-16 編程語(yǔ)言

引言

在進(jìn)行機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中,我們會(huì)經(jīng)常用到np.random.seed(),利用隨機(jī)數(shù)種子,使得每次生成的隨機(jī)數(shù)相同。

numpy.randn.randn(d0,d1,...,dn)

  • randn函數(shù)根據(jù)給定維度生成大概率在(-2.58~+2.58)之間的數(shù)據(jù)
  • randn函數(shù)返回一個(gè)或者一組樣本,具有標(biāo)準(zhǔn)正態(tài)分布
  • dn表示每個(gè)維度
  • 返回值為指定維度的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)

我們將帶著兩個(gè)問(wèn)題進(jìn)行np.random.seed()的學(xué)習(xí):

  1.np.random.seed()是否一直有效?

  2.np.random.seed(Argument)的參數(shù)作用?

E.G.實(shí)驗(yàn)

# -*- 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

運(yùn)行截圖:

可以看出,np.random.seed()對(duì)后面的隨機(jī)數(shù)一直有效。

兩次利用random.seed()后,即使跳出循環(huán)以后,生成隨機(jī)數(shù)的結(jié)果依然相同。第一次跳出while循環(huán)后,進(jìn)入第二次while循環(huán),

得到的兩個(gè)隨機(jī)數(shù)組確實(shí)和加了隨機(jī)數(shù)種子不一樣。但是后面的加入隨機(jī)數(shù)種子的,八次循環(huán)中的結(jié)果和前面的結(jié)果是一樣的。說(shuō)明,

隨機(jī)數(shù)種子對(duì)后面的結(jié)果一直有影響。同時(shí),加入隨機(jī)數(shù)種子以后,后面的數(shù)組都是按一定的順序生成的。

E.G.隨機(jī)數(shù)種子參數(shù)的作用

# -*- 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

運(yùn)行截圖:

當(dāng)隨機(jī)數(shù)種子參數(shù)為0和1時(shí),生成的隨機(jī)數(shù)結(jié)果相同。說(shuō)明該參數(shù)指定了一個(gè)隨機(jī)數(shù)生成的起始位置。每個(gè)參數(shù)對(duì)應(yīng)一個(gè)位置。

并且在該參數(shù)確定后,其后面的隨機(jī)數(shù)的生成順序也就確定了。所以,隨機(jī)數(shù)種子的參數(shù)怎么選擇?這個(gè)參數(shù)只是確定一下隨機(jī)數(shù)的起始位置,可隨意分配.

補(bǔ)充:一個(gè)隨機(jī)種子在代碼中只作用一次,只作用于其定義位置的下一次隨機(jī)數(shù)生成?

import numpy as np
num=0
print(np.random.random())#沒(méi)有設(shè)置隨機(jī)種子 那么這里是根據(jù)系統(tǒng)時(shí)間為參數(shù)生成的隨機(jī)數(shù)
np.random.seed(5)
while(num<5):
    print(np.random.random())
    num+=1

?

總結(jié)

原文鏈接:https://blog.csdn.net/qq_42514371/article/details/122850834

欄目分類(lèi)
最近更新