当我开始训练模型时,之前没有保存模型.我可以model.compile()安全使用.我现在已将模型保存在h5文件中以供进一步培训使用checkpoint.
说,我想进一步训练模型.我在这一点上很困惑:我可以model.compile()在这里使用吗?它应该在model = load_model()声明之前还是之后放置?如果model.compile()重新初始化所有权重和偏见,我应该在model = load_model()陈述之前放置它.
在发现一些讨论后,在我看来model.compile()只有在我之前没有保存模型时才需要.保存模型后,无需使用model.compile().这是真是假?当我想预测使用训练模型时,我应该model.compile()在预测之前使用吗?
Dan*_*ler 85
什么时候用?
如果你正在使用compile,肯定必须在之后load_model().毕竟,你需要一个模型来编译.
怎么load_model办?
编译定义损失函数,优化器和度量.就这样.
它与权重无关,您可以根据需要多次编译模型,而不会对预训练的权重造成任何问题.
您需要一个编译的模型来训练(因为训练使用损失函数和优化器).但是没有必要编译预测模型.
你需要多次使用编译吗?
除非:
再次编译的后果:
如果再次编译模型,则将丢失优化程序状态.
这意味着你的训练在开始时会受到一点点影响,直到它调整学习速度,动力等等.但是对于重量绝对没有损害(当然,除非你的初始学习率是如此之大以至于第一次训练步骤疯狂地改变微调的重量).
tod*_*day 15
别忘了,在更改trainable图层的标志后,例如,当您想要微调模型时,还需要编译模型:
无需顶级分类器即可加载VGG模型
冻结所有图层(即trainable = False)
在顶部添加一些图层
根据一些数据编译和训练模型
通过设置解冻VGG的某些层 trainable = True
再次编译模型(不要忘记这一步!)
在一些数据上训练模型
| 归档时间: |
|
| 查看次数: |
18263 次 |
| 最近记录: |