Google机器学习笔记(七)TF.Learn 手写文字识别
来源:互联网 发布:如何抓取淘宝视频 编辑:程序博客网 时间:2024/06/02 06:25
http://www.cnblogs.com/hellocwh/p/5783249.html
转载请注明作者:梦里风林
Google Machine Learning Recipes 7
官方中文博客 - 视频地址
Github工程地址 https://github.com/ahangchen/GoogleML
欢迎Star,也欢迎到Issue区讨论
mnist问题
- 计算机视觉领域的Hello world
- 给定55000个图片,处理成28*28的二维矩阵,矩阵中每个值表示一个像素点的灰度,作为feature
- 给定每张图片对应的字符,作为label,总共有10个label,是一个多分类问题
TensorFlow
- 可以按教程用Docker安装,也可以直接在Linux上安装
- 你可能会担心,不用Docker的话怎么开那个notebook呢?其实notebook就在主讲人的Github页上
- 可以用这个Chrome插件:npviewer直接在浏览器中阅读ipynb格式的文件,而不用在本地启动iPython notebook
- 我们的教程在这里:ep7.ipynb
- 把代码从ipython notebook中整理出来:tflearn_mnist.py
代码分析
- 下载数据集
mnist = learn.datasets.load_dataset('mnist')
恩,就是这么简单,一行代码下载解压mnist数据,每个img已经灰度化成长784的数组,每个label已经one-hot成长度10的数组
在我的深度学习笔记看One-hot是什么东西
- numpy读取图像到内存,用于后续操作,包括训练集(只取前10000个)和验证集
data = mnist.train.imageslabels = np.asarray(mnist.train.labels, dtype=np.int32)test_data = mnist.test.imagestest_labels = np.asarray(mnist.test.labels, dtype=np.int32)max_examples = 10000data = data[:max_examples]labels = labels[:max_examples]
- 可视化图像
def display(i): img = test_data[i] plt.title('Example %d. Label: %d' % (i, test_labels[i])) plt.imshow(img.reshape((28, 28)), cmap=plt.cm.gray_r) plt.show()
用matplotlib展示灰度图
- 训练分类器
- 提取特征(这里每个图的特征就是784个像素值)
feature_columns = learn.infer_real_valued_columns_from_input(data)
- 创建线性分类器并训练
classifier = learn.LinearClassifier(feature_columns=feature_columns, n_classes=10)classifier.fit(data, labels, batch_size=100, steps=1000)
注意要制定n_classes为labels的数量
- 分类器实际上是在根据每个feature判断每个label的可能性,
- 不同的feature有的重要,有的不重要,所以需要设置不同的权重
- 一开始权重都是随机的,在fit的过程中,实际上就是在调整权重
最后可能性最高的label就会作为预测输出
传入测试集,预测,评估分类效果
result = classifier.evaluate(test_data, test_labels)print result["accuracy"]
速度非常快,而且准确率达到91.4%
可以只预测某张图,并查看预测是否跟实际图形一致
# here's one it gets rightprint ("Predicted %d, Label: %d" % (classifier.predict(test_data[0]), test_labels[0]))display(0)# and one it gets wrongprint ("Predicted %d, Label: %d" % (classifier.predict(test_data[8]), test_labels[8]))display(8)
- 可视化权重以了解分类器的工作原理
weights = classifier.weights_a.imshow(weights.T[i].reshape(28, 28), cmap=plt.cm.seismic)
- 这里展示了8个张图中,每个像素点(也就是feature)的weights,
- 红色表示正的权重,蓝色表示负的权重
- 作用越大的像素,它的颜色越深,也就是权重越大
- 所以权重中红色部分几乎展示了正确的数字
Next steps
- TensorFlow Docker images
- TF.Learn Quickstart
- MNIST tutorial
- Visualizating MNIST
- Additional notebooks
- More about linear classifiers
- Much more about linear classifiers
- Additional TF.Learn samples
0 0
- Google机器学习笔记(七)TF.Learn 手写文字识别
- Google机器学习笔记(七)TF.Learn 手写文字识别
- KNN--用于手写数字识别(机器学习入门笔记)
- KNN--用于手写数字识别(机器学习入门笔记)
- Python scikit-learn 学习笔记—手写数字识别
- 学习笔记TF043:TF.Learn 机器学习Estimator、DataFrame、监督器Monitors
- tensorflow学习笔记(六):TF.contrib.learn大杂烩
- 机器学习之 神经网络的实现(二)-->手写识别
- 机器学习xgboost实战—手写数字识别 (DMatrix)
- 机器学习三(tensorflow 训练识别手写数字)
- 机器学习实战kNN之手写识别
- 机器学习实战kNN之手写识别
- 机器学习实战kNN之手写识别
- 机器学习实战-knn_手写识别
- 机器学习-神经网络-手写字体识别
- 【机器学习实战02】手写识别系统
- 机器学习--knn手写数字识别系统
- 【机器学习 sklearn】手写数字识别 SVM
- TestNG套件测试
- JAVA—HashMap底层实现原理,及HashMap解决冲突的方法
- Android 进程保活招式大全
- LinkedList 灵活应用 --------------亚信 编程题01
- EasyUI Demo
- Google机器学习笔记(七)TF.Learn 手写文字识别
- 粗心的物理学家 FZU-1058 (水坑题)
- App界面原型设计工具
- log4j使用配置教程
- Oracle序列
- 【长篇高能】ReactiveCocoa 和 MVVM 入门
- 关于php后台使用继承模板的理解
- 求割点和桥模版
- Python-selenium:Protected Mode settings are not the same for all zones.