当我在Python中遇到两个优化函数时,我正在训练我的多类分类器,一个是scipy.optimize.fmin_cg
,另一个是scipy.optimize.minimize
。我阅读了文档,但想不通。两者之间的基本区别是什么?在哪种情况下应该使用它们?
答案 0 :(得分:2)
如果您转到minimize
函数(doc)的文档,则在参数列表之后,将使用对描述细节的文章的引用来指定方法。
您实际上可以在其中找到以下行:“方法CG使用非线性共轭梯度算法”,这正是fmin_cg
所做的。因此,minimize
是一个更通用的功能,它可以使用不同的功能,通过选择cg
,它将与更具体的fmin_cg
功能相同。 (在fmin_cg
的文档中,您可以确切地阅读以下内容:“通向所有scipy.optimize算法的通用接口,以实现无约束和无约束的多元函数最小化。它通过指定method ='CG'提供了另一种调用fmin_cg的方法。 。”
那么,您什么时候应该使用fmin_cg
?文档中也回答了这一问题:“共轭梯度方法在以下情况下往往会更好地工作:
您什么时候应该使用minimize
?最小化只是优化算法的集合。因此,真正的问题是什么时候应该使用其他东西。好吧,请阅读文档中有关方法的说明,然后尝试找出答案。可能会找到minimize
将要调用的特定方法(如本例中的fmin_cg
),以进行更详细的说明。