读完前三章Michael Nielson's excellent free book on neural networks ,我想尝试一个基于 Canvas 的网络界面,看看它在我自己的手写输入上的表现如何。结果是 this branch在他的 fork 示例代码 repo 上。它包括一个方形 Canvas ,用户可以在其中勾勒出数字,然后它对网络的 web.py 包装器执行 XHR POST。
我遇到的问题是 web.py,特别是:
class recognize:
def POST(self, name):
# read in posted base64 data, assume PNG, convert to greyscale
data = web.data()
file = cStringIO.StringIO(urllib.urlopen(data).read())
img = Image.open(file).convert('L')
# resize to 28x28
img.thumbnail((28,28), Image.ANTIALIAS)
# convert to vector
vec = np.asarray(img).reshape((28*28,1)).astype(float)
# feed foward through neural network
digit = net.recognize(vec)
print digit
return digit
最后一行似乎无关紧要,我无法在对我的 javascript 客户端的 HTTP 响应中获取 digit。有没有其他方法可以将 digit 放入响应中?
请您参考如下方法:
python 方面很好,您实际上需要在 index.html 中的 XMLHttpRequest 上注册一个回调,以便捕获 recognize 的响应
function exportImage() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText) //capture digit here and do something with it
}
};
xhr.open("POST", "//localhost:8080/recognize", true);
xhr.send(canvas.toDataURL());
}
