2

私の問題は、以下のように定義される、この凸最適化をPythonで解決するには、どのようにパッケージを選択しますか?

minΣ(|| XI-XCI ||^2 +λ|| || CI)、

番目のCII = 0、

X形状d * nの行列であり、Cは形状n * n、xiであり、 ciはXとCの列を別々に意味します。

Xは、ここでは知られており、私たちは、私はすでにAdamOptimizer使用tensorflowでバージョンを、持っている、C.

私は今、いくつかのオプションを持って

を見つけたいXに基づいています。私はこの問題をより効率的に解決できる方法はありますか? cvxpyまたはcvxoptでこの問題が改善されますか?

あなたの誰かが私にテンソルフロー以外の方法で実装を与えることができれば幸いです。

+1

あなたの方程式を読みやすくするために、Latexを使って書き直すのは素晴らしいことでしょう。もっと多くの人があなたの問題を調べます。 –

答えて

1

目的関数は、Pythonでいくつかの良いライブラリがある辞書学習(例:X)とスパースコーディング(ci)に関連していると思います。

scikit-learn's sparse codingと辞書の学習を見てください。最適化のためにSPAMSを使用することもできます。

あなたは既にあなたの辞書を知っているので、あなたが知る必要があるのはスパースコードです。 scikit-learnsスパースコーダーを使うのが一番簡単な方法だと思います。

最適化プロセスをさらに強化したい場合は、thisのように、Theano(またはKeras、Lasagne、TensorFlow)で実装することができます。

+1

良い分析! [疎な近似](https://en.wikipedia.org/wiki/Sparse_approximation)にはwikisの記事もありますが、その中には既にscikit-learnで実装されているものもあります。 OPがcvxpy内で汎用の凸型最適化メソッドを使用したい場合、lassoアプローチは良い出発点になるはずです。 – sascha

関連する問題