我正在尝试使脚本可复制,但遇到了一些问题。该代码在Tensorflow 2.x中,不使用keras API。它有很多层是用tf.compat构建的。模型是用函数get_model()
创建和训练的
os.environ['tf_deterministic_ops'] = "2"
os.environ["PYTHONHASHSEED"] = "2"
random.seed(2)
np.random.seed(2)
tf.random.set_seed(2)
for i in range(5):
get_model()
所以,我在上面对同一个模型进行了5次训练,每次的结果都是一样的。但是,当我运行以下脚本5次时,结果是不同的。我做错什么了吗?任何帮助都会很棒。谢谢
os.environ['tf_deterministic_ops'] = "2"
os.environ["PYTHONHASHSEED"] = "2"
random.seed(2)
np.random.seed(2)
tf.random.set_seed(2)
get_model()
我认为一切正常:设置随机种子总是产生相同的随机变量序列,例如
import numpy as np
# set seed
np.random.seed(2)
for i in range(5):
print(np.random.randint(10)) # prints: 8, 8, 6, 2, 8
for i in range(5):
np.random.seed(2)
print(np.random.randint(10)) # prints: 8, 8, 8, 8, 8
因此,运行第二个脚本五次,每次都会生成相同的模型,因为每次执行都将种子设置为2。在第一个脚本中对for循环进行迭代会生成与seed=2
前五个输出中的变量相对应的模型。使用我的代码示例:您的第二个脚本将始终创建模型"8",您的第一个脚本将创建模型"8."、"8.","6."、"2."one_answers"8."。