大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
创新互联建站于2013年成立,先为巴里坤哈萨克等服务建站,巴里坤哈萨克等地企业,进行企业商务咨询服务。为巴里坤哈萨克企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。这篇文章将为大家详细讲解有关用keras模型如何实现识别自己手写的数字方式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
环境:Python+keras,后端为Tensorflow
训练集:MNIST
对于如何训练一个识别手写数字的神经网络,网上资源十分丰富,并且能达到相当高的精度。但是很少有人涉及到如何将图片输入到网络中并让已经训练好的模型惊醒识别,下面来说说实现方法及注意事项。
首先import相关库,这里就不说了。
然后需要将训练好的模型导入,可通过该语句实现:
model = load_model('cnn_model_2.h6') (cnn_model_2.h6替换为你的模型名)
之后是导入图片,需要的格式为28*28。可用opencv导入:
img = cv2.imread('temp3.png', 0) (temp3.png替换为你手写的图片)
然后reshape一下以符合模型的输入要求:
img = (img.reshape(1,1,28,28)).astype("float32")/255
之后就可以用模型识别了:
predict = model.predict_classes(img)
最后print一下predict即可。
下面划重点:因为MNIST使用的是黑底白字的图片,所以你自己手写数字的时候一定要注意把得到的图片也改成黑底白字的,否则会识别错(至少我得到的结论是这样的 ,之前用白底黑字的图总是识别出错)
源码一览:
import cv2 import numpy as np from keras.models import load_model model = load_model('cnn_model_2.h6') image = cv2.imread('temp3.png', 0) img = cv2.imread('temp3.png', 0) img = (img.reshape(1,1,28,28)).astype("float32")/255 predict = model.predict_classes(img) print ('识别为:') print (predict) cv2.imshow("Image1", image) cv2.waitKey(0)