我的问题定义如下,
minΣ(|| xi-Xci || ^ 2 +λ|| ci ||),
s.t cii = 0,
其中X是形状d * n的矩阵,C的形状为n * n,xi和 ci分别表示X和C列。
X在这里是已知的并且基于X我们想要找到C.
我现在有几个选项,我已经有了tensorflow中的版本,它使用了AdamOptimizer
。我只是想知道,有什么方法可以更有效地解决这个问题吗? cvxpy
或cvxopt
会更好地解决这个问题吗?
如果你们中的任何人能够在除tensorflow之外的任何一种方法上给我一个实现,我将不胜感激。
答案 0 :(得分:1)
我想,目标函数与字典学习(例如你的X)和稀疏编码(你的ci)有关,Python中有几个好的库。
看一下scikit-learn's sparse coding和字典学习。或者,您可以使用SPAMS进行优化。
你已经知道你的字典,所以你需要知道的是稀疏代码。我认为使用scikit学习稀疏编码器将是最简单的方法。
如果您希望在优化过程中拥有更多权力,可以像在this中一样在Theano(或Keras,Lasagne,TensorFlow)中实现它。