問題タブ [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.Parallel を使用するときにメイン ループを保護することが重要なのはなぜですか?
joblib ドキュメントには、次の警告が含まれています。
Windows では、joblib.Parallel を使用するときにサブプロセスの再帰的な生成を回避するために、コードのメイン ループを保護することが重要です。つまり、次のようなコードを書く必要があります。
「if __name__ == '__main__'」ブロックの外でコードを実行するべきではなく、インポートと定義のみを実行する必要があります。
joblib.Parallel
最初は、これは、渡された関数がモジュールを再帰的に呼び出すという時折の奇妙なケースを防ぐためのものだと思っていました。ただし、なぜこれが Windows でのみリスクになるのか、私には理解できません。さらに、この回答は、メイン ループを保護できなかったために、非常に単純な非再帰的な問題の場合よりもコードの実行が数倍遅くなったことを示しているようです。
好奇心から、Windows ボックスのメイン ループを保護せずに、joblib ドキュメントから非常に単純な並列ループの例を実行しました。ターミナルを閉じるまで、次のエラーが表示されました。
私の質問は、 joblib の Windows 実装では、どのような場合でもメイン ループを保護する必要があるということです。
これが超基本的な質問である場合はお詫び申し上げます。私は並列化の世界に慣れていないので、いくつかの基本的な概念が欠けているだけかもしれませんが、この問題が明示的に議論されている場所を見つけることができませんでした。
最後に、これは純粋に学術的なものであることに注意してください。この方法でコードを書くことが一般的に良い習慣である理由を理解しており、joblib に関係なくそうし続けるでしょう。
python-2.7 - nltk 分類モデルが joblib で持続しないのはなぜですか?
他の人が別のオペレーティング システムでこれに問題を抱えていることに気付きました。また、永続的な分類モデルのロードを許可しないモジュールがモジュール内にある可能性があるとも聞きました。Python 2.7 と Enthought Canopy のエディターを搭載した Mac を使用しています。
これは私がエクスポートに使用しているものであり、動作しているようです:
そして、これは私がシェル経由でインポートするために使用しているものです:
これは私が得るエラーです:
AttributeError: 'FreqDist' オブジェクトに属性 '_N' がありません
これは、モデルが適切にエクスポートされていないことを意味していると思います。また、プログラム自体でエクスポート プロセスを自動化することもできず、常にシェルで自動化する必要があります。
アドバイスをありがとうございました。
python - 保存された分類器が呼び出されたときに配列データをキャストできません
https://gist.github.com/zacstewart/5978000の例を使用して分類子を作成しました。分類子をトレーニングするために、次のコードを使用しています
このファイルの例をテストすると、正しく動作します。しかし、分類子を my_trained_data.pkl に保存しようとしていて、次のように呼び出します
これにより、次のエラーが発生します。
以下はトレースです
python - joblib はマルチプロセッシングのために複数のコアを必要としますか?
4 つのフレーム (ビデオから取得した画像) を並行して処理するために、joblib を使用しています。これには、各ループが異なるフレームに対して同じ関数を呼び出す並列 for ループを使用しました。フレームのキャプチャにかかる時間は合計処理時間の 1% にすぎないため (ライン プロファイラーを使用した Python スクリプトのプロファイリングで確認)、最初に 4 つのフレームをキャプチャし、マルチプロセッシングのために joblib に渡します。
ラップトップを使用すると、プロセスが約 5 倍高速化されることがわかりました。Rapberry pi-2 (クアッドコア) では、ほぼ 8 倍のスピードアップが観察され、Beaglebone Black (マルチコアではない) でも、ほぼ 7 倍のスピードアップが観察されました。では、joblib はどのように正確にタスクを分散するのでしょうか?
python - PyNeural モデルをディスクに保存する
PyNeuralを使用してモデルをトレーニングしました。
このトレーニング済みモデルを保存するにはどうすればよいですか? 試しpickle
てみsklearn.externals.joblib
ましたが、うまくいきませんでした。後で言ったように、TypeError: can't pickle NeuralNet objects
python - sklearn.externals.joblib が pkl ファイルをロードしない
会社を辞めた同僚からいくつかのコードを引き継ぎましたが、彼が書いた電子メール開封予測が数週間実行されていないことに気付きました。ということで、実行してみました。この行に到達しました:
clf_predict = joblib.load(os.path.join(data_dir,'trained_random_forest.pkl'))
そして結果はこれでした:
ロードの構文は、ドキュメントで見たものから私には正しいように見えます。したがって、私の最初の理論は、scikit-learn がアップグレードされ、現在の pickle ファイル (この時点で数か月前) を読み取れない可能性があるというものです。ただし、アップグレードされたかどうかはわかりません。sklearn を使用するのは初めてなので、問題が発生するかどうかはわかりません。あなたが与えることができる任意のポインタに感謝します