我在使用keras训练模型时,通过调用keras的fit
函数,并设置epochs=100, shuffle=True
。我希望调用fit
函数10次,并计算每轮10次运行的平均验证准确率。
我希望每次调用fit
时,训练数据的初始顺序不同,并且在各轮次中以不同的方式打乱数据。这是否真的会发生?
(如果不是的话,多次调用fit
函数就毫无意义,因为每次训练的数据顺序都相同。)
回答:
一般来说,要在keras中获得可重现的结果,你需要在每次实验前设置相同的随机种子。假设你使用的是tensorflow后端:
from numpy.random import seedseed(1234)from tensorflow import set_random_seedset_random_seed(5678)
如果你现在希望在不同实验之间有不同的随机行为,你可以明确设置不同的随机种子。至于fit
函数中批次打乱的随机性,每次不同地设置numpy随机种子应该就足够了,因为keras使用np.random.shuffle()来打乱数据。