随机数种子


介绍

在深度学习的实际项目中,为了减少随机性,增强项目的复现能力,设置固定随机数种子十分重要,因此这篇文章罗列了一些设置随机种子的方法和减少项目随机性的经验。

通用函数

def set_random_seed(seed):
    """Set random seeds."""
    os.environ['PYTHONHASHSEED'] = str(seed)
    random.seed(seed)  # 设置 Python 内置随机库的种子
    np.random.seed(seed)  # 设置 NumPy 随机库的种子
    torch.manual_seed(seed)  # 设置 PyTorch 随机库的种子
    torch.cuda.manual_seed(seed)  # 为当前 CUDA 设备设置种子
    torch.cuda.manual_seed_all(seed)  # 为所有 CUDA 设备设置种子

Scikit-learn

Scikit-learn中,部分算法需要设置 random_state,比如聚类算法 kmeans

KMeans(n_clusters=2,random_state=42)

工程经验

  1. 由于部分原因,一些python数组或者python集合等,可能顺序也会影响结果的随机性。如果在无法确保顺序是固定的或者顺序是有要求的情况下,尝试对这些中间结果进行排序减少随机性。

参考资料


文章作者: bg51717
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 bg51717 !
由于评论系统依托于Github的Discuss存在,因此默认评论者会收到所有通知。可以在邮件里点击"unsubscribe"停止接受,后续也可以点击下列仓库进行通知管理: bg51717/Hexo-Blogs-comments
Since the comment system relies on GitHub's Discussions feature, by default, commentators will receive all notifications. You can click "unsubscribe" in the email to stop receiving them, and you can also manage your notifications by clicking on the following repositories: bg51717/Hexo-Blogs-comments
  目录