【发布时间】:2019-08-12 02:08:07
【问题描述】:
我真正想要的是播种数据集和数据加载器。我正在改编代码:
https://gist.github.com/kevinzakka/d33bf8d6c7f06a9d8c76d97a7879f5cb
有人知道如何正确播种吗?在 Pytorch 中播种的最佳实践是什么。
老实说,我不知道是否有针对 GPU 与 CPU 的算法特定方式。我主要关心一般的 pytorch,并确保我的代码是“真正随机的”。特别是当它使用 GPU 时,我猜...
相关:
- https://discuss.pytorch.org/t/best-practices-for-seeding-random-numbers-on-gpu/18751
- https://discuss.pytorch.org/t/the-random-seed/19516/4
- https://discuss.pytorch.org/t/best-practices-for-generating-a-random-seed-to-seed-pytorch/52894/2
我的回答被删除了,下面是它的内容:
我不知道这是否最适合 pytorch,但这似乎是任何编程语言的最佳选择:
通常,您可以在任何编程语言中获得的最佳随机样本是通过操作系统生成的。在 Python 中,您可以使用 os 模块:
random_data = os.urandom(4)
通过这种方式,您可以获得加密安全的随机字节序列,您可以将其转换为数字数据类型以用作种子。
seed = int.from_bytes(random_data, byteorder="big")
编辑:sn-ps 代码仅适用于 Python 3
''' 大于 4 我得到这个错误:
ValueError: Seed 必须介于 0 和 2**32 - 1 之间 '''
RAND_SIZE = 4
【问题讨论】:
-
您能否告诉我们official doc(他们有专门的页面)对此不清楚?我可以建议一个 PR 让它更清楚,但我现在没有看到任何问题。
-
@Berriel 似乎从我发布的答案中得到了一个“真实的”随机数。不是关于可重复性,但我发现我想要别的东西,我会更新/让你知道。
标签: pytorch