使用两个不同的数据集成功地重新训练CNN模型

时间:2020-08-12 07:22:57

标签: python tensorflow keras neural-network

我实现了一个具有3个卷积层的CNN,并在每个层之后进行Maxpooling和Dropout 我注意到,当我第一次训练模型时,它给我的测试准确度是88%,但是在第二次重新训练它之后,在相同的训练数据集下,它给了我92%的测试准确度。

我无法理解这种行为,该模型是否可能在第二次训练过程中过度拟合?

在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果您没有提供R语言中的种子编号set.seed( )或python中的tf.random.set_seed(any_no.),很有可能

答案 1 :(得分:1)

在机器学习方面,我不是专家,但是我知道它背后的数学原理。训练神经网络时您在做什么,基本上可以找到损失函数的局部最小值。这意味着最终结果将在很大程度上取决于所有内部变量的初始猜测。

通常,变量是作为初始估计值随机分配的,因此,与多次运行训练过程相比,您可以获得完全不同的结果。

话虽这么说,但是从我学习这个主题开始,我就被告知无论参数最初的猜测如何,您通常都会达到类似的效果。但是,很难说0.88和0.92是否会被视为相似。

希望这会为您的问题提供一个可能的答案。

如另一个答案中所述,您可以通过引入 seed 来删除参数的参数初始化和用于每个训练时期的数据的随机化的随机化。这样可以确保当您运行两次时,所有内容都将以完全相同的顺序“随机化”。在tensorflow中,这是使用tf.random.set_seed(1)完成的,可以将数字1更改为任何数字以获得新种子。