Keras 的 Web 填坑记

  • Keras 的 Web 填坑记已关闭评论
摘要

Illustrations by Romain Trystram –0x00 前言特别声明:当你在看这篇文章时,你需要对 keras 的基本用法已经了解和使用,并且具有简…

Python中文社区
全球Python中文开发者的
精神部落
Keras 的 Web 填坑记

作者:土豆豆,一个做网站开发的机器学习兼职安全的学生

博客主页https://www.zhihu.com/people/tu-dou-dou-27-10

Keras 的 Web 填坑记

--  Illustrations by Romain Trystram --

0x00 前言

特别声明:当你在看这篇文章时,你需要对 keras 的基本用法已经了解和使用,并且具有简单的Python Web开发基础。由于接下来的文章需要我将用简单的代码演示,所以我将使用Keras和Django进行演示(此处的Keras使用的是Tensorflow作为后端)。

之前开发过一个Web网站,需要对上传的图片进行深度学习预测,使用的是Keras作为项目的深度学习后端,前端使用的是Django。本以为分别开发完成Web程式和Keras的学习预测模块之后拼到一起就可以了,鬼知道tensorflow会报错啊?!

部分代码

Keras 的 Web 填坑记

报的错误截图

Keras 的 Web 填坑记

  1. Tensor Tensor("dense_2/Softmax:0", shape=(?, 10), dtype=float32) is not an element of this graph.

这是什么鬼啊!第一次看到这个的错误时一脸懵逼

Keras 的 Web 填坑记

好吧,深究原因,是因为Tensorflow的运行机制正好和Web有冲突,Tensorflow在后端做预测时是将“图”导入到内存中,之后对图进行计算返回结果,正常情况下这样执行完成之后,程序就Kill掉了,但是由于这里有Web服务,所以那个“图”的计算并没有Kill掉,在第二次执行时,“图”再次被导入计算,由于同时出现了两张一样的“图”,程式就分不清楚哪个是哪个的元素了,于是乎就产生了这样的问题。(PS: 以上一本正经的胡说八道)

既然出现了这样的问题,我就要想办法解决啦,下面,我要开始表演啦!!!前方小高能

0x01 第一种解决方案

先来一个小高能,这也是我遇到这个问题之后想到的第一个解决方案,把预测程式打包成一个独立的应用程式,之后每次查询的时候使用系统命令直接调用这个程式,获取返回结果即可。这个想法比较简单,可执行性也是比较高的,但是缺点也很明显,就是每次预测时候都要重新加载一次模型,时间就是金钱啊!

安啦,下面才是真高能。高能预警!

0x02 比较正统的解决方案

鉴于问题的根本原因,那我们就对症下药好啦,由于是“图”不能同时共存两张,那我们每次都用同一张图就可以了嘛。

  1. import tensorflow as tf

  2. graph = tf.get_default_graph()

  3. global graph

  4. with graph.as_default():

  5.    # 执行预测函数

嗯,没错,就是这四行代码轻松解决这个问题,超简单啊有木有!!!

部分代码

Keras 的 Web 填坑记

上传图片操作

Keras 的 Web 填坑记

页面比较简约,嗯,就是这样。运行结果

Keras 的 Web 填坑记

连续上传两次,我们可以看见预测时间超级快的说。

0x03 结束语

如果本篇文章帮助到了你,实属本人荣幸。

代码详见仓库

  1. https://github.com/ctudoudou/Keras-Web-demo

最近热门文章

Python中被忽略的else

用Python更加了解微信好友

高阶爬虫实战:破解极验滑动验证码

最新实用Python异步爬虫代理池(开源)

Python中文社区开源项目计划:ImagePy

我爬取豆瓣影评,告诉你《复仇者联盟3》在讲什么?(内附源码)

▼ 点击下方阅读原文免费成为社区会员

  • 微信
  • 扫一扫
  • weinxin
  • 微信公众号
  • 扫一扫
  • weinxin
  • 本文由 发表于 2018年5月31日18:03:35
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
高帮鞋
卫衣
一步裙
粉色毛呢大衣
用Python获取磁力种子 Python中文社区

用Python获取磁力种子

♚陈键冬,Python中文社区专栏作者,pyecharts开源项目核心开发者,github id:chenjiandongx本文项目地址:github.com/...
用Python更加了解微信好友 Python中文社区

用Python更加了解微信好友

Python中文社区全球Python中文开发者的精神部落用了微信几年了,微信号有也不少了,但是真正了解自己的好友吗?好友最多的城市...
Python函数的基本特征详解 Python中文社区

Python函数的基本特征详解

Python中文社区全球Python中文开发者的精神部落要点抢先看1、开始编写一个简单完整的函数 2、函数也是对象 3、函数的多态内涵今...