第一步,设置种子随机数
在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果,当得到比较好的结果时我们通常希望这个结果是可以复现的,在pytorch中,通过设置随机数种子可以达到这个目的。
def set_seed(seed):
torch.manual_seed(seed) # cpu 为CPU设置种子用于生成随机数,以使得结果是确定的
torch.cuda.manual_seed(seed) # gpu 为当前GPU设置随机种子
torch.backends.cudnn.deterministic = True # cudnn
np.random.seed(seed) # numpy
random.seed(seed) # random and transforms
可以参考 https://cloud.tencent.com/developer/article/1149041 (我觉得写的还可以)
np.random.seed(1)
seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随机数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。要注意的是,random.seed(something)只能是一次有效。
可以参考 https://blog.csdn.net/linzch3/article/details/58220569