2

我的问题定义如下,

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

st cii = 0,

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

X在这里是已知的,基于X我们想找到C。

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

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

4

1 回答 1

1

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

看看scikit-learn 的稀疏编码和字典学习。或者,您可以使用SPAMS进行优化。

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

如果您想在优化过程中拥有更多权力,您可以自己在 Theano(或 Keras、Lasagne、TensorFlow)中实现它,如下所示

于 2016-07-19T02:27:11.110 回答