web-dev-qa-db-ja.com

Djangoの機械学習(tensorflow / sklearn)?

Djangoのフォームがあり、これはユーザーの応答を収集しています。また、テンソルフローの分類モデルもあります。これら2つを組み合わせる最良/標準の方法は何ですか。詳細:

  1. テンソルフローモデルは、Rotten TomatoesのMovie Reviewデータでトレーニングされました。
  2. 応答モデルに新しい行が作成されるたびに、テンソルフローコードで分類します(+または-)。
  3. 基本的にDjangoプロジェクトディレクトリと分類用の2つの.pyファイルがあります。先に進む前に、機械学習アルゴリズムをWebアプリに実装する標準的な方法を知りたいと思いました。

チュートリアルやレポを提案できたら最高です。ありがとうございました !

17
Subrat

非同期処理

あなたがMLコードからの分類結果を必要としない場合すぐにをユーザーに渡す(たとえば、同じPOST submttedを要求する)への応答として、分類ジョブをバックグラウンドで実行するか、より多くのCPU /メモリリソースを持つ別のサーバー(たとえば、 Django-background-tasks または Celery

キューに入れられたタスクは、たとえばフィールドUserResponse.class_name(正、負)そのフィールドが空白(まだ分類されていない)であるデータベース行

リアルタイム通知

MLコードが遅く、結果が利用可能になり次第ユーザーに返されたい場合は、上記の非同期アプローチを使用できます。リアルタイム通知とのペア(例: socket.io ブラウザへ( これはキューに入れられたタスクからトリガー可能

これは、MLの実行時間が非常に長く、以下で説明する同期アプローチでHTTP要求がタイムアウトする可能性がある場合に必要になります。

MLコードがCPUを集中的に使用しない場合(十分に高速)の同期処理

その分類結果がすぐに返される必要があり、ML分類が十分に速い*である場合、HTTPリクエスト/レスポンスサイクル(= POST MLコードが同期的に行われた後にリクエストが返されます)

*ここで十分に速いということは、HTTP要求/応答がタイムアウトにならず、ユーザーが忍耐を失うことはないということです。

23
bakkal

まあ、私は同じソリューションを自分で開発しなければなりませんでした。私の場合、Theanoを使用しました。 tensorflowまたはtheanoを使用している場合、作成したモデルを保存できます。そのため、最初にトレーニングデータセットでモデルをトレーニングしてから、選択したライブラリを使用してモデルを保存します。 Django Webアプリケーションに、予測を処理するコードの部分のみをデプロイする必要があります。したがって、単純なPOSTを使用して、予測された文のクラスを十分迅速にユーザーに提供します。また、必要と思われる場合は、ジョブを定期的に実行して、新しい入力パターンを使用してモデルを再度トレーニングし、もう一度保存することができます。

Django=はソリューションに実行時間を追加するため、使用しないことをお勧めします。

代わりに、ノードを使用して、スタンドアロンサーバーとして機能する TensorFlow rest API と対話するReactjsフロントエンドを提供できます。

この投稿の上の答えが示唆するように、WebSocketsを使用する方が良いでしょう、あなたはreact WebSocket module を使用することができますので、コンポーネントの状態が変わるとコンポーネントを更新します。

お役に立てれば。