首页 文章

应该在使用model.load_weights()之前运行model.compile(),如果模型只是略有改变,请说丢失?

提问于
浏览
0

通过近24个时期的数据集进行培训和验证,一次间歇性地进行8个时期,并在每个时间间隔后累积保存权重 .

我观察到前16个时期的火车和测试损失不断下降,之后训练损失继续下降而测试损失上升所以我认为这是过度拟合的情况 .

为此我试图恢复训练,在16个时期之后保存的权重与超参数的变化说 increasing dropout_rate 一点 . 因此,我重新使用具有新丢失的密集和转换块来获得具有相同序列和可学习参数计数的相同架构 .

现在,当我使用 model.load_weights()compiling thereafter 为我的新模型(带有新的辍学)分配先前的权重时 . 我看到训练损失甚至更高,应该是最初的(显然随着训练期间随机节点的不活动性增加)但后来也怀疑可能在加载预训练的重量后编译可能会破坏性能?

model.load_weights()model.compile() 的推理和推荐顺序是什么?我非常感谢对上述案例的任何见解 .

1 回答

  • 0

    model.compile() 方法不会以任何方式触碰权重 .

    其目的是创建一个符号函数,将损失和优化器添加到模型的现有函数中 .

    您可以根据需要随时编辑模型,并且您的权重将保持不变 .

    Possible consequences of compile

    如果你有一个模型,训练有素的时代,它的优化器(取决于你选择的类型和参数)也将针对特定时期进行训练 .

    编译将使您失去训练有素的优化器,并且由于学习速率不适合模型的当前状态,您的第一批培训批次可能会遇到一些不良结果 .

    除此之外,编译不会造成任何伤害 .

相关问题