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

is it incorrect to change a model's parameters after training it?

我试图在我之前训练的一组模型上使用平均集成(我正在为我正在使用的每个预训练模型在集成中创建一个新模型,然后将训练好的权重加载到它上面,我知道这种方式效率低下,但我只是在学习它,所以这并不重要)。并且我在集成代码中加载模型时错误地更改了一些网络参数,例如使用 Relu 而不是我在训练模型时使用的 leakyRelu 以及其中一个模型的密集层中的 l2 正则化器的不同值。然而,这给了我更好的合奏测试准确性。你能给我解释一下吗if/how这是不正确的,如果是正常的我可以用这个方法进一步提高集成的准确性吗?

尽管您在加载模型时更改了网络参数。更改整体基础模型的超参数并没有错。在某些情况下,集成方法中使用的模型需要独特的调整,正如您提到的那样,可以给出 "you a better testing accuracy for the ensemble model."

为了回答你的第二个问题,你可以使用这种方法来进一步提高集成的准确性,如果你更喜欢调整超参数的自动化方法,你还可以使用贝叶斯优化、GridSearch 和 RandomSearch。

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

什么是训练?

训练本质上是一个不断变化或更新 parameters 的循环。它以一种它认为可以减少损失的方式更新 parameter。这也就像在 hyper-space 中移动你的 point,损失函数在那个 point 上给出了一个小的损失。

一般来说,损失越小意味着准确度越高。

改变权重

所以现在,无意或有意更改 parameters 值就像将 移动到某个地方,但 你没有逻辑这样的举动背后的原因会让你的损失更小。你只是随机地在那个 hyper-space 周围徘徊,在你的情况下,你很幸运,你降落到某个 ,这样发生会给你一个更小的损失或更好的测试准确性。纯属运气。

改变激活函数

此外,将激活函数从 leakyRelu 更改为 relu 类似于您随机更改炒作的形状 - space。即使你在某些 景观发生变化,你仍然没有逻辑理由相信通过这种景观变化你可以在相同的情况下保持较小的损失

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