目前我的所有代码都是基于 tensorflow1.15,实验中设置种子的方式为
tf.compat.v1.set_random_seed(args.seed)
np.random.seed(args.seed)
random.seed(args.seed)
这样设置后,相同 seed 的实验结果基本上是一样的(网络模型的初始参数是不变的,每一步的结果都是固定的)。但是,如果对 tf 的 graph 做出些许无影响改变,如:多加一个无用的 placeholder,多加一个无用的全连接层等等,每一步的结果就会和之前未修改的时候有区别。
举个例子,算法 algo1.py 和 algo2.py,后者的逻辑比前者仅仅多了一个无用的 placeholder,即使两个算法的 seed 相同,每一步的实验结果也会不一样。