训练后更改模型的参数是否不正确?

时间:2020-05-27 09:29:17

标签: python tensorflow keras deep-learning ensemble-learning

我正在尝试对我之前训练的一组模型使用平均合计(我正在为正在使用的每个预先训练的模型在集合中创建一个新模型,然后将训练后的权重加载到该模型上,这样效率低下这样我就知道了,但我只是在学习,所以这并不重要。我在使用集成代码加载模型时错误地更改了一些网络参数,例如使用Relu而不是我在训练模型时使用的LeakyRelu,以及其中一个模型的密集层中的l2正则化函数的不同值。但是,这给了我更好的整体测试精度。能不能请您向我解释这是否/不正确,如果是正常的话,我可以使用这种方法进一步提高合奏的准确性。

2 个答案:

答案 0 :(得分:0)

尽管在加载模型时更改了网络参数。更改集成基础模型的超参数并非不正确。在某些情况下,集成方法中使用的模型需要进行独特的调整,正如您提到的那样,可以为“集成模型提供更好的测试准确性”。

要回答第二个问题,可以使用此方法进一步提高集成度的准确性,如果您希望使用更自动化的方法来调整超参数,也可以使用贝叶斯优化,GridSearch和RandomSearch。

答案 1 :(得分:0)

我认为训练后更改模型的parameters是不正确的。 parameters这里的意思是trainable-parameters就像密集节点中的权重,而不是像学习率这样的超参数。

什么是培训?

培训实质上是一个循环,不断更改或更新parameters。它以认为可以减少损失的方式更新parameter。就像在超空间中移动 point 一样,损失函数会在该 point 上产生少量损失。

较小的损失通常意味着较高的准确性。

更改权重

所以现在,错误地或有意地更改parameters值就像将 point 移至某处,但您没有逻辑上的理由认为这样做会给您的损失较小。您只是在超空间中四处游荡,就您而言,很幸运地落到了某个 point 位置,因此发生的情况给您带来的损失较小或测试精度更高。纯粹是运气。

更改激活功能

此外,将激活函数从leakyRelu更改为relu类似于您随机更改炒作空间的形状。即使您处于某个变化,您仍然没有逻辑上的理由相信通过这种变化可以保持较小的损耗并保持在相同的 >

手动更改模型时,需要重新训练。

相关问题