环境:
虚拟机ubuntun16.0.4; Tensorflow版本:0.12.0(仅使用cpu下的) ,
Tensorflow安装见:
http://blog.csdn.net/yhhyhhyhhyhh/article/details/54429034
或者:
http://www.tensorfly.cn/tfdoc/get_started/os_setup.html
学习一个新框架、新模型,通常会先找相关的demo例程跑一下,然而Tensorflow版本更新快,接口也变化,初学者一开始就分析源码、学习框架会感觉很困难,Tensorflow本身附带了很多例程,网上很多博客、帖子其实都是Tensorflow本身附带的例子。本文简单分析一些Tensorflow代码结构及模型例子,很多例子都是可以直接运行的,当然考虑到训练时间及电脑的配置,可以自行修改相应参数,以便快速上手,适合初学者练习。
Tensorflow github地址:https://github.com/tensorflow
tensorflow:
重要目录:
core目录是tensorflow源码中最核心的一个目录,其代码逻辑主要为C++开发实现。
在models中包含很多经典的机器学习例程。
我的ubuntun通过pip安装Tensorflow后,安装目录在:/usr/local/lib/python2.7/dist-packages/,可将整个Tensorflow文件夹复制到home下,便于编辑和修改。Tensorflow附带的模型例子在/tensorflow/models下。
mnist是一个手写数字识别的数据集,包含60000行的训练数据集和10000行的测试数据集,每一个MNIST数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签,大小为28x28像素的灰度图片。Tensorflow附带的mnist目录包含一个简单的卷积神经网络训练及测试mnist的demo。
数据集 | 作用 |
---|---|
data_sets.train | 55000 组 图片和标签, 用于训练。 |
data_sets.validation | 5000 组 图片和标签, 用于迭代验证训练的准确性。 |
data_sets.test | 10000 组 图片和标签, 用于最终测试训练的准确性。 |
Tensorflow中测试mnist的例程使用,直接在终端中运行以下:
yhh@ubuntu:~$ cd ~/Test/tensorflow/models/image/mnist/
yhh@ubuntu:~/Test/tensorflow/models/image/mnist$ python convolutional.py
运行一下mnist例程,最终结果测试的正确率:92%
Cifar-10由60000张32*32的RGB彩色图片构成,共10个分类。50000张训练,10000张测试(交叉验证)。
/tensorflow/models/image/cifar_10下包含以下文件:
文件 | 作用 |
---|---|
cifar10_input.py | 读取本地CIFAR-10的二进制文件格式的内容 |
cifar10.py | 建立CIFAR-10的模型 |
cifar10_train.py | 在CPU或GPU上训练CIFAR-10的模型 |
cifar10_multi_gpu_train.py | 在多GPU上训练CIFAR-10的模型(没用GPU的话,不用管) |
cifar10_eval.py | 评估CIFAR-10模型的预测性能 |
cifar10___train.py会调用 cifar___10.py中的接口, cifar__10.py会调用cifar10___input.py中的接口
Tensorflow中测试cifar10的例程使用,直接在终端中运行以下:
1)开始训练
yhh@ubuntu:~/Test/tensorflow/models/image/cifar10$ python cifar10_train.py
2)测试
yhh@ubuntu:~/Test/tensorflow/models/image/cifar10$ python cifar10_eval.py
注意:上述训练文件:cifar10_train.py中的max_steps在跑代码测试时可自行修改,太大的话训练时间太长了。
由下图实验结果可知,训练次数max_steps还是很影像最终精确度的。
>结果:
ImageNet 模拟人类的识别系统建立的,能够从图片识别物体。目前世界上图像识别最大的数据库。Tensorflow0.12.0附带的测试例子是在ImageNet 2012 Challenge data set。
imagenet比赛设置:1000类图像分类问题,训练数据集126万张图像,验证集5万张,测试集10万张(标注未公布)。2012,2013,2014均采用了该数据集。评价标准采用top-5错误率,即对一张图像预测5个类别,只要有一个和人工标注类别相同就算对,否则算错。
Tensorflow中测试imagenet的例程使用,直接在终端中运行以下:
yhh@ubuntu:~/Test/tensorflow/models/image/imagenet$ python classify_image.py
输入为任意一张图片,输出为识别概率(1000类)最靠前的5类结果。(默认读取图片的路径为:/tmp/imagenet)
部分测试结果:
输入:
识别结果:
Tenssorflow中文社区