問題タブ [cvxopt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - cvxopt パッケージと一緒に Python のマルチプロセッシング モジュールを使用する
凸最適化のためのcvxopt パッケージの問題に遭遇しましたが、ドキュメントには記載されていませんでした。何が原因で、それを回避する最善の方法を誰かが知っているのだろうか.
問題はimport cvxopt
、インスタンスを利用する Python プログラムでmultiprocessing.Process
、プロセスを並列に実行できなくなることです。それらは自動的に同期されるようです。cvxopt
これは、関数がプログラムで実際に使用されているかどうかに関係なく発生することに注意してください。パッケージをインポートするだけで、この効果が発生します。
例:
上記のスクリプトは、メイン プログラムと並行して実行される 4 つのプロセスを開始します。4 つのコアを持つマシンでは、4 つのプロセスがあり、それぞれが 100% の CPU を使用していました。
ただし、開始時にステートメントのコメントを外すとimport cvxopt
、各プロセスは、他のプロセスと同期しているかのように、CPU の 25% しか占有しなくなります。
説明と回避策の両方に興味があります。私が見落としたドキュメントに明らかな説明がある場合は、お詫び申し上げます。
問題の再現方法の詳細
これを実行している環境は、Linux 3.5.0 (Ubuntu 12.10 ディストリビューション) と Python 3.2.3 です。これは、cvxopt をインストールした方法です。
matplotlib 1.2.1 をインストールします (多くの cvxopt サンプル スクリプトで使用されている pylab が含まれているため、これを行いました。これが実際の要件であるかどうかはわかりません)。この tar.gz パッケージを使用し
sudo python3 setup.py install
てインストールしました。BLASとATLASを搭載
上記はおそらく必要以上ですが、それで問題が発生した場合は驚くでしょう。
こことからtar.gz パッケージを使用して、cvxopt 1.1.6 をインストールしました
sudo python3 ./setup.py install
。
python - cvxopt のインストールに関する問題
Windows に cvxopt をインストールしようとしています。2.7 Python Enthought ディストリビューションを使用しています。こちらの指示に従いましたが、
http://abel.ee.ucla.edu/cvxopt/install/
私が遭遇するエラーは次のとおりです。
./liblapack.a: シンボルを読み取れませんでした: アーカイブにインデックスがありません。ranlib を実行して 1 つの collect2 を追加します: ld が 1 つの終了ステータス エラーを返しました: コマンド 'gcc' が終了ステータスで失敗しました
私を助けてください、私はかなり迷っています。どうもありがとう。
svm - SVM 実装におけるしきい値 b
私は、固有の二次計画問題を解決するために cvxopt を使用して、SVM の独自の大まかな実装をいじっていました。私は SVM の初心者です。
これは私自身の実装であるため、マージンサポートベクトルと分離平面のしきい値 b を把握する責任は私にあります。かなりのサイズ (約 5K サンプル、2 次元の数値入力) のデータ セットで、ソフト SVM 形式で、マージン サポート ベクターを見つけようとしているときに問題に遭遇しました。
マージン サポート ベクターは、C よりも小さいゼロ以外のアルファです。ただし、cvxopt の feastol パラメータをやみくもに使用して、C とみなすことができるアルファと C よりも小さいとみなすことができるものを決定すると、しきい値 b が各マージンから導出されることがわかりました。サポート ベクターはかなり異なり、場合によっては著しく異なります。(理論的には、マージンサポートベクトルのいずれかから導出されたしきい値 b は同じであると想定されています)
アドホックなしきい値処理が機能する場合もありますが、実行できない場合もあります。さまざまなしきい値を巧みに試して、「最も一貫性のない」bのセットなどを取得する方法があるかもしれません。
(a) そのような状況は、実際の実践者 (または libsvm や svm-light などの「内部」実装) によって実際に遭遇したのか、それとも私の特定のケースではバグや実装の問題のように聞こえますか?
(b) これが実際に問題である場合、どのように解決されますか: Burges による SVM チュートリアルでは、マージン サポート ベクターから導出されたすべてのしきい値の平均を取るだけであると述べています。 Gunn の技術レポート ( http://www.ecs.soton.ac.uk/~srg/publications/pdf/SVM.pdf )。それは簡単な方法であり、実際にはうまく機能しますか?これは libsvm や svm-light などで行われていることですか? または、さまざまなしきい値を試して、一貫性のない許容可能なしきい値のセット b を取得する原則的な方法はありますか?
matlab - matlabのcvxブロックでargmaxを見つける方法は?
matlab の cvx ブロック内で argmax を見つけようとしています。これは、線形計画法を使用してベルマン方程式の最適なポリシーを見つけるだけです。以下のコードで、私がやった場合:
リスト Q の最大値を見つけて正常に動作しますが、すぐに次のようになります。
リスト Q の argmax を見つけるために、次のように文句を言います。
cvx で argmax を見つける別の方法はありますか?
cvxopt - Python 用の cvxopt のインストール - libblas.a と liblapack.a はどこにありますか
Windows での cvxopt のインストールに関して (私が想定していることですが) かなり単純な質問があります。この「ガイド」http://cvxopt.org/install/index.htmlに従っています。しかし、私はあなたがするべき部分で立ち往生しています
libblas.a と liblapack.a を src ディレクトリにコピーします。
私はこの種のことがとても苦手で、自分が何をしているのかまったくわからないと言っても過言ではありません。誰かが私にこれらを見つけることができる場所を教えてくれれば、私は非常に役に立ちます. 私はそれが何か関係があると思います:
make lapacklib && cp liblapack.a ..
と
&& cp blas_WIN.a ../libblas.a を作成します。
でも、これではどうにもならない…。
前もって感謝します!
matlab - matlab cvx を使用した最小カット
ユーザーのグラフでバイナリ最小カットを使用してコミュニティを検出しようとしています。この目的のために、この論文に示されているように、フィードラー法の変形を使用しようとしています。これは彼らがそれを形式化した方法です:
現在、matlab の CVX パッケージを使用してこれを実行しようとしています。これが私のコードです:
しかし、次のエラーが表示されます。
ここで、A1 は次のように定義された行列です。
同様に、A2 = A1 です。
そして pi1 は行列であり、値がその特定の行の A1 のすべての値の合計に等しい対角行列です。そうすることで私は得ます
同様に、pi1 = pi2 です。
また、tou1 = pi1 - A1、tou2 = pi2 - A2 です。
誰かが私が間違っていることを正確に指摘できますか。それは大いに役立つでしょう。前もって感謝します !
python - Enthought python (Canopy) で CVXOPT をインストールする方法
始める前に、この投稿に別のタイトルを付けさせてください。
インテル® MKL で CVXOPT をコンパイルする方法は?
CVXOPT の __init__.py をインテル® MKL でコンパイルするように変更するにはどうすればよいですか?
問題を説明しましょう。Enthought python は Ubuntu パッケージ マネージャーの python と比較して大幅な速度向上を提供するため、Enthought python で pystruct をインストールしようとしています。高速化は主に、インテル® MKL ライブラリーを使用してバックエンドの線形代数ライブラリーをコンパイルしたことによるものです。CVXOPT と pystruc は gnu python でうまく動作すると言わざるを得ません。
Enthought python (Canopy 以前の EPD) で CVXOpt をインストールしようとした人がいるかどうか疑問に思っていました。インテル® MKL でコンパイルする必要があります。
CVXOPT をビルドして Python でインポートしようとすると、次のエラーが発生します (リンカー エラーのようです)。
しかし、デフォルトのpythonでインポートしようとすると、エラーは発生しません(テストも機能します)。
問題は、間違ったライブラリへのリンクにあると思います。また、MKL に関して CVXOPT を再コンパイルする必要がある場合に備えて、INTEL MKL も持っています (blas Enthought のバージョンが使用されているようです)。ドキュメンテーションには、Enthough で動作させる方法についての説明が見つかりませんでした。アドバイスをお願いします。
更新:前述したように、CVXOPT は gnu python でコンパイルおよび実行されます。私は次のトリックを行いましたが、これはあまり良い考えではありませんが、うまくいきます:
この投稿から学んだこと: ( libgfortran: version `GFORTRAN_1.4' not found )
さて、問題は、これを行うためのクリーンな方法は何ですか? 1 つのパッケージに対してのみライブラリをプリロードするにはどうすればよいですか。またはインテル® MKL で CVXOPT をコンパイルし、ライブラリーをプリロードする必要はありませんか?
ありがとう、
ケイハン