MoyanZitto / keras-cn

Chinese keras documents with more examples, explanations and tips.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

keras example中的例子imdb_cnn.py怎样操作才是使结果“完全重现”?

iamhedandan opened this issue · comments

我将keras example中的例子imdb_cnn.py运行三次,得到三次不同的结果,输出test accuracy得到的结果分别为:
0.87996,
0.87632,
0.87644
请问怎样做才能使最终输出的结果完全稳定下来,每次运行输出结果一模一样,完全重现?

因为存在dropout层,随机丢掉一些参数重设为0,如果结果每次都一样,那才是一件非常奇怪的事情。

@iamhedandan
将随机数种子固定有可能会得到完全相同的结果

@MoyanZitto 大神,例子中np.random.seed(1337)已经固定了随机数种子了,是不是还有其他地方需要固定随机种子的,都有哪些地方,可不可以贴代码教我···

@busixingxing 可不可以教我怎么固定dropout的值

我也只是使用 dropout,并不知道如何固定,因为我也不清楚 dropout的随机数是如何产生的,是不是服从 random的随机种子

@iamhedandan 我也不太清楚……

Dropout 层的初始化参数里有一个 seed 参数,我想这就是你想找的。

通过设置的 seed,会调用K.dropout(x, self.p, noise_shape, seed=self.seed),然后调用tf.nn.dropout(x * 1., retain_prob, noise_shape, seed=seed),既然到了 tensorflow,我们也可以直接使用这个函数tf.set_random_seed来设置随机数种子。