使用tfrecord建立自己的数据集——conda

一、前言:

在学习tensorflow的时候,里面除了具体的项目实践外,还涉及到了创建TFRecord格式的数据集,今天回顾一下这个内容。
单位的机器只有ananconda2的python2.7,下面先贴出用conda创建虚拟环境的相关命令。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

conda设置国内镜像
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/

conda config --set show_channel_urls yes

这里写图片描述

安装成功
这里写图片描述

三、使用tfrecord制作自己的数据集

现在分别利用两类不同的猫数据:英国短毛猫和缅甸猫来做数据,每类都有5个:
这里写图片描述

① 制作TFRECORD文件

1 先聊一下tfrecord, 这是一种将图像数据和标签放在一起的二进制文件,能更好的利用内存,在tensorflow中快速的复制,移动,读取,存储 等等..
这里注意,tfrecord会根据你选择输入文件的类,自动给每一类打上同样的标签
如在本例中,只有0,1 两类
2 先上“制作TFRecord文件”的代码,注释附详解
这里写图片描述

tf.train.Example 协议内存块包含了Features字段,通过feature将图片的二进制数据和label进行统一封装, 然后将example协议内存块转化为字符串, tf.python_io.TFRecordWriter 写入到TFRecords文件中。

于是,生成一个cat_train.tfrecords的文件——cat_train.tfrecords

② 读取TFRECORD文件

这里写图片描述

这里需要注意的是: feature的属性label和img_raw应该和制作时起的名称一致,返回的img数据和label数据一一对应。返回的img和label是2个tf张量。

③ 显示tfrecord格式的图片

有些时候我们希望检查分类是否有误,或者在之后的网络训练过程中可以监视,输出图片,来观察分类等操作的结果,那么我们就可以session回话中,将tfrecord的图片从流中读取出来,再保存。 紧跟着一开始的代码写:

这里写图片描述

这里写图片描述

Wait for all the threads to terminate, give them 10s grace period 给每个线程10s的宽限期
coord.join(threads, stop_grace_period_secs=10)

在这里可以看到,图片已经被正确的打上label,没问题。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/g11d111/article/details/79390105
今日推荐