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

时间:2016-05-22 12:36:23

标签: django machine-learning scikit-learn tensorflow sentiment-analysis

我有一个django表单,它正在收集用户响应。我也有张量流句分类模型。将这两者结合在一起的最佳/标准方法是什么? 详情:

  1. 张量流模型在Rotten Tomatoes的电影评论数据上进行了培训。
  2. 每次在我的响应模型中创建一个新行时,我都希望张量流代码对其进行分类(+或 - )。
  3. 基本上我有一个django项目目录和两个.py文件用于分类。在继续自己之前,我想知道将机器学习算法实现到Web应用程序的标准方法是什么。
  4. 如果您可以推荐教程或回购,那就太棒了。 谢谢!

3 个答案:

答案 0 :(得分:22)

异步处理

如果您不需要ML代码中的分类结果立即将传递给用户(例如,作为对提交的相同POST请求的响应),然后,您始终可以将分类作业排队到后台运行,甚至是具有更多CPU /内存资源的其他服务器(例如,使用django-background-tasksCelery

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

实时通知

如果ML代码很慢且想要将结果返回给用户,则可以使用上述异步方法,并与实时通知配对(例如socket.io到浏览器(this can be triggered from the queued task

如果ML执行时间太长以至于可能会在下面描述的同步方法中超时HTTP请求,则这是必要的。

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

如果你需要立即返回分类结果,并且ML分类足够快* ,你可以在HTTP请求 - 响应周期内完成(在ML代码完成后POST请求返回,同步)

*这里足够快意味着它不会超时HTTP请求/响应,用户也不会失去耐心。

答案 1 :(得分:8)

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

答案 2 :(得分:0)

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

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

正如本文上方答案所暗示的,使用WebSockets会更好,您可以使用react WebSocket module,这样一旦组件状态改变,它就会刷新您的组件。

希望这会有所帮助。