Django 中的机器学习(tensorflow / sklearn)?

Machine Learning (tensorflow / sklearn) in Django?

我有一个 Django 表单,它正在收集用户响应。我还有一个tensorflow句子分类模型。 best/standard 将这两者放在一起的方法是什么。 详情:

  1. tensorflow 模型是根据烂番茄的电影评论数据训练的。
  2. 每次在我的响应模型中创建一个新行,我都希望 tensorflow 代码对其进行分类(+ 或 -)。
  3. 基本上我有一个django项目目录和两个分类的.py文件。在我自己继续之前,我想知道将机器学习算法实施到 Web 应用程序的标准方法是什么。

如果您能推荐教程或存储库,那就太好了。 谢谢!

异步处理

如果您不需要将 ML 代码的分类结果立即传递给用户(例如作为对提交的相同 POST 请求),那么您始终可以将分类作业排队到 运行 在后台或者甚至是具有更多 CPU/memory 资源的不同服务器(例如 django-background-tasks or Celery)

例如,排队的任务是在该字段为空(尚未分类)的数据库行上填充字段 UserResponse.class_name(正、负)

实时通知

如果 ML 代码很慢,并且想要return结果一可用就给用户,您可以使用上面描述的异步方法,并与实时通知配对(例如 socket.io to the browser (

如果 ML 执行时间太长以至于它可能会在下面描述的同步方法中超时 HTTP 请求,那么这就变得必要了。

同步处理,如果 ML 代码不是 CPU 密集型(足够快)

如果您需要立即 returned 那个分类结果,并且 ML 分类足够快 *,您可以在 HTTP 请求-响应周期内这样做 ( ML 代码完成后 POST 请求 returns,同步)

*这里足够快意味着它不会使 HTTP request/response 超时,并且用户不会失去耐心。

好吧,我必须自己开发相同的解决方案。就我而言,我使用了 Theano。如果您使用的是 tensorflow 或 theano,则可以保存您构建的模型。因此,首先,使用您的训练数据集训练模型,然后使用您选择的库保存模型。您只需将处理预测的代码部分部署到您的 Django Web 应用程序中。因此,使用简单的 POST,您可以足够快地向用户提供句子的预测 class。此外,如果您认为需要,您可以 运行 定期使用新的输入模式再次训练您的模型并再次保存。

我建议不要使用 Django,因为它会增加解决方案的执行时间。

相反,您可以使用 node 来提供与作为独立服务器运行的 TensorFlow rest API 交互的 Reactjs 前端。

正如上面这个 post 的答案所建议的那样,最好使用 WebSockets,您可以使用反应 WebSocket module 这样一旦组件的状态发生变化,它就会刷新您的组件。

希望对您有所帮助。