如何在Python中选择用于解决此凸优化的包?

时间:2016-07-18 15:29:24

标签: python machine-learning tensorflow cvxopt convex-optimization

我的问题定义如下,

  

minΣ(|| xi-Xci || ^ 2 +λ|| ci ||),

     

s.t cii = 0,

     

其中X是形状d * n的矩阵,C的形状为n * n,xi和   ci分别表示X和C列。

     

X在这里是已知的并且基于X我们想要找到C.

我现在有几个选项,我已经有了tensorflow中的版本,它使用了AdamOptimizer。我只是想知道,有什么方法可以更有效地解决这个问题吗? cvxpycvxopt会更好地解决这个问题吗?

如果你们中的任何人能够在除tensorflow之外的任何一种方法上给我一个实现,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我想,目标函数与字典学习(例如你的X)和稀疏编码(你的ci)有关,Python中有几个好的库。

看一下scikit-learn's sparse coding和字典学习。或者,您可以使用SPAMS进行优化。

你已经知道你的字典,所以你需要知道的是稀疏代码。我认为使用scikit学习稀疏编码器将是最简单的方法。

如果您希望在优化过程中拥有更多权力,可以像在this中一样在Theano(或Keras,Lasagne,TensorFlow)中实现它。