我真正想要的是播种数据集和数据加载器。我改编的代码来自:
https://gist.github.com/kevinzakka/d33bf8d6c7f06a9d8c76d97a7879f5cb
有人知道如何正确地播种吗?在Pytorch中播种东西的最佳实践是什么?
老实说,我不知道是否有一个算法特定的方式为GPU vs 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")
编辑:代码片段仅适用于Python 3
'''大于4,出现以下错误:
ValueError:种子必须介于0和2**32 - 1之间"""
随机尺寸= 4
1条答案
按热度按时间nkoocmlb1#
请查看https://pytorch.org/docs/stable/notes/randomness.html
我就用这个
最后两个参数(cudnn)用于GPU
您可以按如下方式生成种子: