赞
踩
机器学习和深度学习中,为了程序的可复现性,需要设置随机数种子。在跑多个模型时,由于数据的预处理不同,数据集进行划分时重复使用torch.utils.data.random_split,需要注意的问题
由于我这里使用的torch是1.5.0版本,torch.utils.data.random_split函数没有generator的参数设置种子,因此需要在代码前加入
# Fix Seed
torch.manual_seed(0) # 为CPU设置种子用于生成随机数,以使得结果是确定的
但是单独跑各个模型和循环跑所有模型的时候,得到的结果不一样
经过一步步调试发现,循环跑所有模型的时候,每次运行到torch.utils.data.random_split函数时,得到的训练集和测试集的indice列表和单独跑模型的时候不同
循环跑模型时,是将设置随机数种子这句话放在了循环外,而设置随机数种子只影响第一个torch.utils.data.random_split函数,因此后面再进入循环,设置随机数种子没有作用了。
numpy设置随机数种子也是同样的道理,下面举两个例子:
只设置一个随机数种子
import numpy as np
np.random.seed(0)
m = np.random.randint(10)
print(m) # 5
m = np.random.randint(10)
print(m) # 0
m =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。