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卡吗?
混乱!任何帮助赞赏。谢谢,全部!