np.random.seed(seed)random.seed(seed)os.environ[‘PYTHONHASHSEED‘] = str(seed)

np.random.seed(seed)

random.seed(seed)

os.environ['PYTHONHASHSEED'] = str(seed)

用于设置随机种子,以确保代码执行时的随机过程具有可重复性。随机种子(seed)是随机数生成器的起点,设置相同的种子可以确保每次运行程序时生成相同的随机数序列。这对于实验的可重复性、调试和结果的一致性非常重要。

np.random.seed(seed)

  • 功能:设置 NumPy 的随机数生成器的种子。
  • 用途:确保 NumPy 的随机数生成在每次运行时都具有确定性。这意味着如果你在程序中使用 NumPy 生成随机数(例如创建随机数组或进行随机抽样),每次运行程序时都会生成相同的随机数。

random.seed(seed)

  • 功能:设置 Python 内置的随机数生成器的种子。
  • 用途:确保 Python 内置的 random 模块生成的随机数具有确定性。例如,如果你使用 random 模块来生成随机整数、选择随机元素或打乱列表,每次运行程序时这些操作都会产生相同的结果。

os.environ['PYTHONHASHSEED'] = str(seed)

  • 功能:设置环境变量 PYTHONHASHSEED
  • 用途:确保 Python 的哈希种子具有确定性。Python 3.3 之后,为了防止哈希冲突攻击,Python 对字符串哈希计算使用了随机化。通过设置 PYTHONHASHSEED 环境变量,可以使哈希种子固定,从而确保字典和集合等使用哈希的结构在不同运行之间保持顺序一致。这对需要一致性哈希行为的场景(例如分布式系统或某些测试场景)很重要。

这些代码片段确保程序中各部分使用的随机数生成器和哈希种子具有确定性,从而实现程序运行结果的可重复性。

def build_sequences(text, window_size): #text:list of capacity x, y = [],[] for i in range(len(text) - window_size): sequence = text[i:i+window_size] target = text[i+1:i+1+window_size] x.append(sequence) y.append(target) return np.array(x), np.array(y) # 留一评估:一组数据为测试集,其他所有数据全部拿来训练 def get_train_test(data_dict, name, window_size=8): data_sequence=data_dict[name][1] train_data, test_data = data_sequence[:window_size+1], data_sequence[window_size+1:] train_x, train_y = build_sequences(text=train_data, window_size=window_size) for k, v in data_dict.items(): if k != name: data_x, data_y = build_sequences(text=v[1], window_size=window_size) train_x, train_y = np.r_[train_x, data_x], np.r_[train_y, data_y] return train_x, train_y, list(train_data), list(test_data) def relative_error(y_test, y_predict, threshold): true_re, pred_re = len(y_test), 0 for i in range(len(y_test)-1): if y_test[i] <= threshold >= y_test[i+1]: true_re = i - 1 break for i in range(len(y_predict)-1): if y_predict[i] <= threshold: pred_re = i - 1 break return abs(true_re - pred_re)/true_re def evaluation(y_test, y_predict): mae = mean_absolute_error(y_test, y_predict) mse = mean_squared_error(y_test, y_predict) rmse = sqrt(mean_squared_error(y_test, y_predict)) return mae, rmse def setup_seed(seed): np.random.seed(seed) # Numpy module. random.seed(seed) # Python random module. os.environ['PYTHONHASHSEED'] = str(seed) # 为了禁止hash随机化,使得实验可复现。 torch.manual_seed(seed) # 为CPU设置随机种子 if torch.cuda.is_available(): torch.cuda.manual_seed(seed) # 为当前GPU设置随机种子 torch.cuda.manual_seed_all(seed) # if you are using multi-GPU,为所有GPU设置随机种子 torch.backends.cudnn.benchmark = False torch.backends.cudnn.deterministic = True
05-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值