問題タブ [joblib]
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 - joblib の中間結果
Pythonjoblib
の組み込みモジュールの代替としてモジュールを学習しようとしています。multiprocessing
私はmultiprocessing.imap
iterable に対して関数を実行し、結果を返すことに慣れています。この最小限の作業例では、joblib でそれを行う方法がわかりません。
どちらが印刷されますか:
出力を見たい:
または同様のもので、イテラブルMP(...)
がすべての結果が完了するのを待っていないことを示します。より長いデモの変更n_jobs=-1
とrange(100)
.
python - クラスター内の joblib.load() がファイルをロードできない
はじめ
に 通常のラップトップで実行されるコードを、MPI を使用してクラスター (HPC) に移植しています。
私が扱っているのは、さまざまなファイル パスを多数のワーカーに送信している、恥ずかしいほど並列の問題です。joblib.dump()
対応する各ファイルには、関数 withを使用して以前に生成された numpy 配列が 1 つ含まれていますlzma compression=2
。
詳細
すべてのファイルは同じディレクトリに保存
されます ファイルリストの生成例joblib.dump()
:
- File1.lzma
- File1.lzma_01.npy.z
- File2.lzma
- File2.lzma_01.npy.z
ワーカーに拡張子が .lmza のファイルへのパス (例: File1.lzma) を渡すと、ワーカーはファイルを読み込めjoblib.load()
ず、エラーが発生します。.lzma_01.npy.z でファイルを渡しても同じです。私の推測では、両方のファイルが必要であり、HPC の場合、ファイルが同じディレクトリにあるのに十分ではないためです (私のラップトップで実行されているコードでは十分であり、ファイルは適切に読み込まれます)。
質問
1) 私の仮説は正しいですか?
2) 両方のファイル パスを に渡す方法はありますjoblib.load()
か?
3) これは欠落している機能ですか? ファイルを再処理して pickle で保存する必要がありますか?
4) 私は完全に間違っていますか?
ありがとう
python - Pythonクラスのメンバー関数の出力をキャッシュするjoblib.Memoryの使い方
joblib.Memory
ライブラリを使用してクラスのメンバー関数の出力をキャッシュしたいと考えています。サンプルコードは次のとおりです。
ただし、次のエラーが表示されます。
メモリまたはその他のデコレータを使用してクラスのメンバー関数をキャッシュする方法はありますか?
python - sklearn RandomForest モデルでの 32/64 ビット シリアル化例外の回避策
64 ビット マシンで joblib を使用してランダム フォレスト モデルをシリアル化し、32 ビット マシンで展開すると、例外があります。
この質問は以前に尋ねられました: Scikits-Learn RandomForrest training on 64bit python wont open on 32bit python . しかし、2014年以降、この質問には回答がありません。
モデルを学習するためのサンプル コード (64 ビット マシン上):
32 ビット マシンで展開するサンプル コード:
私の質問は: 64 ビット マシンで学習し、予測のために 32 ビット マシンに移植する必要がある場合、この問題に対する一般的な回避策はありますか?
編集: joblib の代わりに pickle を直接使用しようとしました。まだ同じエラーがあります。コア pickle ライブラリでエラーが発生します (joblib と pickle の両方)。
python - Python で 2D 画像の scikit SVM 分類を効率的に並列化する方法
scikit-learn パッケージを使用して、2D 画像で SVM 分類を行っています。各ピクセルには、分類の基になる 9 つの特徴があります。正常にトレーニングされた classifierがあり、それを使用してその 2D 画像、つまり 3D 配列(Xdim,Ydim,#features)clf
の分類を実行したいとします。input
最も単純ですが、非常に非効率的な方法では、次のようになります。
このプロセスをスピードアップする効率的な方法は何でしょうか? 上記の例では、分類子に与えられるポイントは 1 つだけですが、ベクトル (#samples X #features) を完全に処理できるため、svm_classification
関数はよりスマートな方法で使用する必要があります。「joblib」とその「parallel」モジュール ( https://pythonhosted.org/joblib/parallel.html ) を使用することを考えていましたが、3D 配列でこれを行う方法がわかりません。入力データの自動スライスのチャンクサイズを指定する方法はありますか? 入力配列を手動で再形成する必要がありますか? 自分で正しい答えを見つけられないのは、2D分類画像になるはずの入力データ(3D)の形状にあると思います。正しい方向への提案は大歓迎です!
python - 非推奨の Scikit-learn モジュールにより、joblib がそれをロードできない
sklearn.hmm モジュールを使用して joblib で漬け込んだ隠れマルコフ モデルがあります。バージョン 0.17.x では、このモジュールは廃止され、hmmlearn に移動されたようです。モデルをロードできず、次のエラーが表示されます。
ImportError: 'sklearn.hmm' という名前のモジュールがありません
バージョン 0.16.x に戻そうとしましたが、モデルを読み込めません。次のエラーが表示されます。
ImportError: libopenblas.so.0: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
モデルを再作成して再ピクルするためのソースコードへのアクセス権がありません
私はPython 3.5を実行しています
他の誰かがこの問題を経験し、解決策を見つけましたか? 非推奨以降、scikit-learn に永続性を保証する方法があるかどうかは誰にもわかりませんか?