您的当前位置:首页>新品 > 正文

深度学习代码中如何设置随机数的种子?seed在模型中的应用及用法:全球时讯

来源:CSDN 时间:2023-03-01 14:06:06


(相关资料图)

SEEDseed在深度学习代码中叫随机种子,设置seed的目的是由于深度学习网络模型中初始的权值参数通常都是初始化成随机数。而使用梯度下降法最终得到的局部最优解对于初始位置点的选择很敏感,设置了seed就相当于规定了初始的随机值。 设置随机种子的方法能够近似的完全复现作者的开源深度学习代码,随机种子的选择能够减少一定程度上算法结果的随机性,也就是更接近于原始作者的结果

即产生随机种子意味着每次运行实验,产生的随机数都是相同的

在深度学习代码中可以使用以下函数

def seed_all(seed):    if not seed:        seed = 0    log("[ Using Seed : ", seed, " ]")    torch.manual_seed(seed)    torch.cuda.manual_seed_all(seed)    torch.cuda.manual_seed(seed)    np.random.seed(seed)    dgl.random.seed(seed)    random.seed(seed)

torch.manual_seed(seed)设置CPU生成随机数的种子

# test.pyimport torchtorch.manual_seed(0)print(torch.rand(1)) # 返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数

tensor([0.4963]) #每次都会输出这个值

torch.cuda.manual_seed_all(seed)torch.cuda.manual_seed_all()则是为所有的GPU设置种子。

torch.cuda.manual_seed(seed)表示在GPU中设置生成随机数的种子。当设置的种子固定下来的时候,之后依次pytorch生成的随机数序列也被固定下来。需要注意的是当只调用torch.cuda.manual_seed()一次时并不能生成相同的随机数序列。如果想要得到相同的随机数序列就需要每次产生随机数的时候都要调用一下torch.cuda.manual_seed()。

dgl.random.seed(seed)在DGL中设置随机方法的种子。

random.seed(seed)random.seed() 会改变随机生成器的种子;传入的数值用于指定随机数生成时所用算法开始时所选定的整数值,如果使用相同的seed()值,则每次生成的随机数都相同;如果不设置这个值,则系统会根据时间来自己选择这个值,此时每次生成的随机数会因时间的差异而有所不同。

标签:

最新新闻:

新闻放送
Top