TF Boys (TensorFlow Boys ) 养成记(四):TensorFlow 简易 CIFAR10 分类网络
前面基本上把 TensorFlow 的在图像处理上的基础知识介绍完了,下面我们就用 TensorFlow 来搭建一个分类 cifar10 的神经网络。
首先准备数据:
cifar10 的数据集共有 6 万幅 32 * 32 大小的图片,分为 10 类,每类 6000 张,其中 5 万张用于训练, 1 万张用于测试。数据集被分成了5 个训练的 batches 和 1 个测试的 batch。每个 batch 里的图片都是随机排列的。官网上提供了三个版本的下载链接,分别是 Python 版本的,Matlab 版本的和二进制文件版本的。其中,Python 版本的数据格式,官网上给了读取数据的代码,Matlab 版本的数据和 Python 版本的数据格式差不多。二进制版本的数据,有 5 个训练用的 batches,data_batch_1.bin ~ data_batch_5.bin 和一个测试用的 test_batch.bin,每个 bin 文件的格式如下:
<1 x label><3072 x pixel>
...
<1 x label><3072 x pixel>
共有一万行,每行 3073 个字节,第一个字节表示标签信息,剩下的 3072 字节分为 RGB 三通道,每个通道 1024( = 32 * 32) 个字节,注意,行与行之间没有明显的区分标识符,所以整个 bin 文件字节长度恰好是 3073 万。
考虑到 TensorFlow 可以读取固定长度格式的数据(用 tf.FixedLengthRecordReader ),我们下载二进制格式的数据。新建文件夹/home/your_name/TensorFlow/cifar10/data,从cifar10 官网上下载二进制格式的文件压缩包,解压到此文件夹,得到 cifar-10- batches-bin 文件夹,里面有 8 个文件,6 个 .bin文件,一个 readme, 一个 .txt 说明了类别。
然后我们来考虑如下的网络结构进行 cifar10 的分类:每次输入一个batch的 64 幅图像, 转化成 64*32*32*3 的四维张量,经过步长为 1,卷积核大小为 5*5 ,Feature maps 为64的卷积操作,变为 64*32*32*64 的四维张量,然后经过一个步长为 2 的 max_pool 的池化层,变成 64*16*16*64 大小的四维张量,再经过一次类似的卷积池化操作,变为 64*8*8*64 大小的4维张量,再经过两个全连接层,映射到 64*192 的二维张量,然后经过一个 sortmax 层,变为 64*10 的张量,最后和标签 label 做一个交叉熵的损失函数。如下图所示:
参考文献:
1. https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10
TF Boys (TensorFlow Boys ) 养成记(四):TensorFlow 简易 CIFAR10 分类网络的更多相关文章
- TF Boys (TensorFlow Boys ) 养成记(五): CIFAR10 Model 和 TensorFlow 的四种交叉熵介绍
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...
- TF Boys (TensorFlow Boys ) 养成记(一)
本资料是在Ubuntu14.0.4版本下进行,用来进行图像处理,所以只介绍关于图像处理部分的内容,并且默认TensorFlow已经配置好,如果没有配置好,请参考官方文档配置安装,推荐用pip安装.关于 ...
- TF Boys (TensorFlow Boys ) 养成记(一):TensorFlow 基本操作
本资料是在Ubuntu14.0.4版本下进行,用来进行图像处理,所以只介绍关于图像处理部分的内容,并且默认TensorFlow已经配置好,如果没有配置好,请参考官方文档配置安装,推荐用pip安装.关于 ...
- TF Boys (TensorFlow Boys ) 养成记(五)
有了数据,有了网络结构,下面我们就来写 cifar10 的代码. 首先处理输入,在 /home/your_name/TensorFlow/cifar10/ 下建立 cifar10_input.py,输 ...
- 第二十四节,TensorFlow下slim库函数的使用以及使用VGG网络进行预训练、迁移学习(附代码)
在介绍这一节之前,需要你对slim模型库有一些基本了解,具体可以参考第二十二节,TensorFlow中的图片分类模型库slim的使用.数据集处理,这一节我们会详细介绍slim模型库下面的一些函数的使用 ...
- TensorFlow学习笔记(四)图像识别与卷积神经网络
一.卷积神经网络简介 卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现. ...
- TensorFlow.org教程笔记(一)Tensorflow初上手
本文同时也发布在自建博客地址. 本文翻译自www.tensorflow.org的英文教程. 本文档介绍了TensorFlow编程环境,并向您展示了如何使用Tensorflow解决鸢尾花分类问题. 先决 ...
- Tensorflow教程(1)Tensorflow的下载和安装
人工智能已经成为了目前的大趋势,作为程序员的我们也应该跟着时代进步.Tensorflow作为人工智能领域的重要工具,被广泛的使用在机器学习的应用当中. Tensorflow使用人数众多.社区完善,所以 ...
- [翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed Systems"
[翻译] TensorFlow 分布式之论文篇 "TensorFlow : Large-Scale Machine Learning on Heterogeneous Distributed ...
随机推荐
- postman 请求 页面出现 Could not get any response 解决方法
1.关闭掉证书 2.再关闭掉代理 3.去掉请求头的Content-Length字段 (或者一个个试请求头的值,看去掉那些就请求成功了) 后记: 网友 @ 重庆张晓祥 提供了个线索确实让我想起以前我从浏 ...
- appium 滑动封装
#获得机器屏幕大小x,y def getSize(): x = dr.get_window_size()['width'] y = dr.get_window_size()['heig ...
- 杂项:HTML5-1/3-发展历程
ylbtech-杂项:HTML5-1/3-发展历程 万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改(这是一项推荐标准.外语原文:W3C Recommendat ...
- java mybatisGenerator with velocity
mybatisGenerator + velocity 模板生成dao+ mapper,并将mysql命名规范的table name + column -> java命名规范的 Class na ...
- 关于v9缓存的那点事
当做好以后模块后,由于是模块原型性能不佳,故而可以用缓存方式来提升效率.缓存生成可以是模块的一个方法或者一个函数,phpcms的缓存也可以分为不同的类型,比如file,memcache.如果是file ...
- 字体相关CSS属性介绍
font-family 字体系列. font-family可以把多个字体名称作为一个“回退”系统来保存.如果浏览器不支持第一个字体,则会尝试下一个.浏览器会使用它可识别的第一个值. 简单实例: bod ...
- NLTK与自然语言处理基础
NLTK (Natural Language Toolkit) NTLK是著名的Python自然语言处理工具包,但是主要针对的是英文处理.NLTK配套有文档,有语料库,有书籍. NLP领域中最常用的一 ...
- Numpy的ndarry
Numpy的ndarry:一种多维数组对象 Numpy最重要的一个特点就是其N维数组对象(即ndarry),该对象是一个快速而灵活的大数据集容器.你可以利用这种数组对整块数据执行一些数学运算,其语法跟 ...
- “microsoft ace oledb 12.0 未注册”疑云
1. 有人说: 2015也是要安装32位的AccessDataengine,anycpu选32位优先才行,不然就是Microsoft.ACE.OLEDB.12.0未注册. hanstom,一个老调重弹 ...
- C# 本地文件夹上传至网络服务器中(待续)
一.文件的上传参考 思想,C#FTP上传 /// <summary> /// 上传 /// </summary> /// <param name="filena ...