簡體   English   中英

python隨機種子進度如何保存?

[英]How to save python random seed progress?

我正在 Colab 上訓練強化學習程序並希望保持其可重復性,所以我在開始時設置了隨機種子

import random
random.seed(1)
import numpy as np
np.random.seed(1)

問題是 Colab 會不時終止我的執行,所以我需要保存一些檢查點,例如 model 參數,以便它繼續。 現在我的問題是如何保存“播種”進度? 我發現如果我在恢復時重新初始化我的種子,生成的隨機數 go 回到初始執行。

例如

>>> random.seed(40)
>>> random.random()
0.4586
>>> random.random()
0.8778
# the next is >>> random.random()
#             0.0318

# while continue execution
>>> random.seed(40)
>>> random.random()
0.4586        # I want this to be 0.0318

謝謝!

感謝@jasonharper 的評論指出了正確的方向!

  1. 對於隨機模塊,使用 getstate() 和 setstate()。

例如

>>> random.seed(40)
>>> random.random()
0.4586
>>> random.random()
0.8778
>>> state = random.getstate()
>>> random.random()
0.0318
>>> random.setstate(state)
>>> random.random()
0.0318

參考 - https://www.w3schools.com/python/ref_random_setstate.asp

  1. 對於 numpy.random,使用 get_state() 和 set_state()。 這是它的工作原理

例如

>>> import numpy as np
>>> np.random.seed(1)
>>> np.random.rand(1,1)
array([[0.417022]])
>>> state = np.random.get_state()
>>> np.random.rand(1,1)
array([[0.72032449]])
>>> np.random.set_state(state)
>>> np.random.rand(1,1)
array([[0.72032449]])

參考 - https://numpy.org/doc/stable/reference/random/generated/numpy.random.get_state.html; https://numpy.org/doc/stable/reference/random/generated/numpy.random.set_state.html#numpy.random.set_state

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM