首页 > 解决方案 > 尽管由于 GPU 导致的结果不可重现,是否应该播种?

问题描述

我想用 Google Colab(Tensorflow+Keras)中的 GPU 用相同的训练数据集训练一个 CNN 架构多次,然后用相同的测试数据集测试每个训练过的模型。然后我想确定结果(准确度)的均值和标准差,以评估 CNN 的性能。(我想反复训练 CNN 架构,因为 GPU 的存在不可能产生可重复的结果)。

我想知道我是否不应该在每次运行时放置不同的种子以至少稍微限制随机性?

到目前为止,我已经设置了以下种子,其值因运行而异,除了os.environ['PYTHONHASHSEED']='0',我不确定是否应该放这个?

import os
import numpy as np
import tensorflow as tf
import random as rn

os.environ['PYTHONHASHSEED']='0'
np.random.seed(1)
rn.seed(2)
tf.set_random_seed(1)

你怎么看?我应该播种还是不播种?

标签: tensorflowkerasgoogle-colaboratoryrandom-seed

解决方案


除非您试图获得完全可重现的结果,否则设置种子是没有用的。由于这似乎不是您的目标,因此我建议您不要设置任何种子。


推荐阅读