Keras / TF训练模型作为Django应用程序运行一次,然后返回值错误

时间:2018-02-10 00:42:03

标签: python django tensorflow machine-learning keras

TF社区 -

所以我使用简单的MNIST数据训练了TensorFlow模型。我在Python脚本中使用Keras'load_model来提升它并model.predict()将图像提供给模型(一旦数据被正确转换),它就可以进行预测。当使用各种示例从命令行运行predict.py时,这很有效。

但我的目标是网络应用程序 - 如果这个预测脚本,所以我可以从其他应用程序ping它。启动Django应用程序相当容易,并且只要某个URL端点被命中,就会导致predict.py运行。给定在POST请求中发送的随机MNIST图像,应用程序将(通常是正确的)第一次进行预测,我可以在方括号中的服务器日志中看到:

2018-02-09 17:49:40.639847: I C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1195] Creating TensorFlow d evice (/device:GPU:0) -> (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1) [5] [09/Feb/2018 17:49:43] "POST /predict/ HTTP/1.1" 200 1

然后,在我使用python manage.py runserver重新启动服务器之前,所有后续帖子都会产生错误。我通常会得到几个重叠的例外,它不喜欢各种占位符值 - 但据我所知,我从来没有设置过那些东西 - 这都是Keras,对吗?

ValueError: Tensor Tensor("Placeholder_2:0", shape=(3, 3, 32, 64), dtype=float32) is not an element of this graph.

这是脚本 - 它非常简单。为了争论,我甚至删除了Web请求图像,只是尝试在同一本地存储的图像上运行预测。再次,工作一次,然后错误:

def index(request): model = load_model('C:\\Users\\james\\PycharmProjects\\karas-test\\my_model.h5') # get image out of request object im = cv2.imread("C:\\Users\\james\\PycharmProjects\\karas-test\\5.png",0) # cv2.imshow('ImageWindow', im) # cv2.waitKey() im = im/255 im = numpy.expand_dims(im, axis=0) probs = model.predict(im.reshape(1,28,28,1), 1) prediction = probs.argmax(axis=-1) print(prediction) return HttpResponse(prediction)

我是否未能在返回值之前正确卸载或销毁某些对象或数据文件?在app / server启动时,我只需要加载模型或为TensorFlow旋转一次GFX卡吗?

混乱!任何帮助赞赏。谢谢,全部!

0 个答案:

没有答案