我最近使用许多层,SGD优化以及从MobileNetv2预先训练的模型开始,完成了用于图像识别的“非常好” TF2 / keras模型。
我可以永远进行调整:添加/删除层,不同的优化算法,学习率,动量,各种数据集扩充等。我什至没有考虑从其他预先训练的模型开始。我将优化程序从SGD更改为ADAM(应该更好,对吧?),它的准确性略有提高。
那么,如何收敛于更好的预训练模型,参数,值?只是试错法吗?训练模型大约需要45分钟(10个纪元),当我调整这么多变量时,这似乎永远都是如此。
我想我可以编写一个python框架来插入各种训练属性,然后让它运行几天。
答案 0 :(得分:1)
我不知道这是否是一个合适的SO问题。
此问题称为超参数调整(或优化)。您可以决定手动执行此操作,也可以通过对所有参数使用诸如网格搜索之类的搜索技术来完成此操作。
还有更多高级技术使用贝叶斯优化来自动执行此过程。
在ML社区中进行超参数优化的一种常见且成熟的工具称为hyperopt。
https://github.com/hyperopt/hyperopt
Hyperopt是一个Python库,用于在尴尬的搜索空间上进行串行和并行优化,其中可能包括实值,离散和条件维。
另外,由于您在问题中标记了Keras,所以有一个名为auto keras的工具,该工具还可以搜索超参数https://autokeras.com/
Auto-Keras提供了自动搜索深度学习模型的体系结构和超参数的功能。