欢迎来到天天文库
浏览记录
ID:14519258
大小:623.81 KB
页数:21页
时间:2018-07-29
《深度学习进阶笔记之八 tensorflow与中文手写汉字识别》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、UCLoud中国云三强:www.ucloud.cn深度学习进阶笔记之八
2、TensorFlow与中文手写汉字识别引言TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,被广泛用于语音识别或图像识别等多项机器深度学习领域。其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow代表着张量从图象的一端流动到另一端计算过程,是将复杂的数据结构传输至人工智能神经网中进行分析和处理的过程。TensorFlow完全开源,任何人都可以使用。可在小到一部智能手机、大到数千台数据中心服务器的各种
3、设备上运行。『机器学习进阶笔记』系列将深入解析TensorFlow系统的技术实践,从零开始,由浅入深,与大家一起走上机器学习的进阶之路。Goal本文目标是利用TensorFlow做一个简单的图像分类器,在比较大的数据集上,尽可能高效地做图像相关处理,从Train,Validation到Inference,是一个比较基本的Example,从一个基本的任务学习如果在TensorFlow下做高效地图像读取,基本的图像处理,整个项目很简单,但其中有一些trick,在实际项目当中有很大的好处,比如坚决不要一次读入所有的的数据到内存(尽管在Mnist这类级别的例子上经常出现)…UCLoud中国
4、云三强:www.ucloud.cn刚开始看到是这篇blog里面的TensorFlow练习22:手写汉字识别,但是这篇文章只用了140训练与测试,试了下代码很快,但是当扩展到所有的时,发现32g的内存都不够用,这才注意到原文中都是用numpy,会先把所有的数据放入到内存,但这个不必须的,无论在MXNet还是TensorFlow中都是不必须的,MXNet使用的是DataIter,会在程序运行的过程中异步读取数据,TensorFlow也是这样的,TensorFlow封装了高级的api,用来做数据的读取,比如TFRecord,还有就是从filenames中读取,来异步读取文件,然后做shu
5、fflebatch,再feed到模型的Graph中来做模型参数的更新。具体在tf如何做数据的读取可以看看readingdataintensorflow这里我会拿到所有的数据集来做训练与测试,算作是对斗大的熊猫上面那篇文章的一个扩展。BatchGenerate数据集来自于中科院自动化研究所,感谢分享精神!!!具体下载:wgethttp://www.nlpr.ia.ac.cn/databases/download/feature_data/HWDB1.1trn_gnt.zipUCLoud中国云三强:www.ucloud.cnwgethttp://www.nlpr.ia.ac.cn/da
6、tabases/download/feature_data/HWDB1.1tst_gnt.zip解压后发现是一些gnt文件,然后用了斗大的熊猫里面的代码,将所有文件都转化为对应label目录下的所有png的图片。(注意在HWDB1.1trn_gnt.zip解压后是alz文件,需要再次解压我在mac没有找到合适的工具,windows上有alz的解压工具)。importosimportnumpyasnpimportstructfromPILimportImagedata_dir='../data'train_data_dir=os.path.join(data_dir,'HWDB1.1
7、trn_gnt')test_data_dir=os.path.join(data_dir,'HWDB1.1tst_gnt')defread_from_gnt_dir(gnt_dir=train_data_dir):defone_file(f):header_size=10whileTrue:header=np.fromfile(f,dtype='uint8',count=header_size)ifnotheader.size:breakUCLoud中国云三强:www.ucloud.cnsample_size=header[0]+(header[1]<<8)+(header[2]<
8、<16)+(header[3]<<24)tagcode=header[5]+(header[4]<<8)width=header[6]+(header[7]<<8)height=header[8]+(header[9]<<8)ifheader_size+width*height!=sample_size:breakimage=np.fromfile(f,dtype='uint8',count=width*height).reshape((height,width))y
此文档下载收益归作者所有