Python随机数
random
随机数
在导入random
模块时,会在模块内部执行语句_inst = Random()
,其中类Random
为模块random
内部定义的类。模块random
提供的seed
、randint
和choice
等函数为_inst
实例的成员函数。
seed需为非负整数
numpy
随机数
在导入numpy.random
模块时,会在模块numpy.random.mtrand
内部执行语句_rand: RandomState
,其中类RandomState
为模块numpy.random.mtrand
内部定义的类。模块numpy.random
提供的seed
、randint
和choice
等函数为_rand
实例的成员函数。
seed需为非负整数
cupy
随机数
同numpy
随机数
torch
随机数
在导入torch
模块时,会在模块torch._C.__init__
和torch.cuda.__init__
内部分别执行语句default_generator:Generator
和default_generators:Tuple[torch._C.Generator]=()
,其中类Generator
为模块torch._C.__init__
内部定义的类。模块torch
提供的seed
、manual_seed
和initial_seed
等函数为default_generator
实例的成员函数。模块torch.cuda
提供的seed
、manual_seed
和manual_seed_all
等函数会调用default_generators
元组中对应实例的对应成员函数。
import os
import random
import numpy as np
import torch
# 为了禁止hash随机化,用于python中的某些hash操作
os.environ['PYTHONHASHSEED'] = str(seed)
# 为random设置随机种子
random.seed(seed)
# 为numpy设置随机种子
np.random.seed(seed)
# 为torch设置随机种子
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
# if you are using multi-GPU.
torch.cuda.manual_seed_all(seed)
# cudnn中对卷积操作进行了优化,牺牲了精度来换取计算效率
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
若seed为负整数,则值会被转为对应的64位无符号整数
tensorflow
随机数
tf.random.set_seed用法_仁义礼智信达的博客-CSDN博客
tensorlow
随机种子包括图级种子和操作级种子。图级种子使用tensorflow,random.set_seed()
设置,操作级种子在声明随机变量时通过传入seed
参数设置。
难以手动为
tensorflow
声明一个随机数生成器实例。