gpt4 book ai didi

tensorflow - model.compile() 是否初始化 Keras( tensorflow 后端)中的所有权重和偏差?

转载 作者:行者123 更新时间:2023-12-03 06:21:02 25 4
gpt4 key购买 nike

当我开始训练模型时,之前没有保存任何模型。我可以安全地使用 model.compile() 。我现在已将模型保存在 h5 文件中,以便使用 checkpoint 进行进一步训练。

比如说,我想进一步训练模型。我现在很困惑:我可以在这里使用 model.compile() 吗?它应该放在 model = load_model() 语句之前还是之后?如果 model.compile() 重新初始化所有权重和偏差,我应该将其放在 model = load_model() 语句之前。

在发现一些讨论后,在我看来,只有当我之前没有保存模型时才需要 model.compile() 。保存模型后,就不需要使用 model.compile() 了。这是真的还是假的?当我想使用经过训练的模型进行预测时,我应该在预测之前使用 model.compile() 吗?

最佳答案

何时使用?

如果您使用compile,那么它肯定必须在load_model()之后。毕竟,您需要一个模型来编译。 (PS:load_model使用与模型一起保存的优化器自动编译模型)

编译有什么作用?

Compile 定义了损失函数优化器指标。就这样。

它与权重无关,您可以根据需要多次编译模型,而不会导致预训练权重出现任何问题。

您需要一个编译模型来训练(因为训练使用损失函数和优化器)。但没有必要编译模型来进行预测。

您需要多次使用编译吗?

仅当:

  • 您想要更改其中一项:
    • 损失函数
    • 优化器/学习率
    • 指标
    • 某个层的可训练属性
  • 您加载(或创建)了一个尚未编译的模型。或者您的加载/保存方法没有考虑之前的编译。

再次编译的后果:

如果再次编译模型,您将丢失优化器状态

这意味着你的训练一开始会受到一点影响,直到调整学习率、动量等。但是权重绝对不会受到损害(当然,除非你的初始学习率太大,以至于第一个训练步骤极大地改变了微调的权重)。

关于tensorflow - model.compile() 是否初始化 Keras( tensorflow 后端)中的所有权重和偏差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47995324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com