当我开始训练模型时,以前没有保存任何模型。我可以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
办?
编译定义损失函数,优化器和度量。就这样。
它与权重无关,您可以根据需要多次编译模型,而不会对预训练权重造成任何问题。
您需要一个经过编译的模型来进行训练(因为训练使用损失函数和优化器)。但是没有必要为预测而编译模型。
您是否需要多次使用编译?
除非:
trainable
某层的性质再次编译的后果:
如果再次编译模型,则会丢失优化器状态。
这意味着您的训练在开始时会受到一点影响,直到它调整学习速度,动量等为止。但是绝对不会对重量造成损害(除非您的初始学习速度如此之大,以至于第一次训练步骤会疯狂地更改微调的权重)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句