TensorFlow(八)TFRecords使用方法与实例

这篇文章介绍如何将大量数据存储为TFRecords格式的文件,然后将TFRecords格式的文件按批次处理的方式引入代码中,用来训练你的模型。
本文借鉴了 link中的大部分内容,加上自己的理解和对代码中用到的库的补充说明。

TFRecords 是 Tensorflow standard format ,就是tf标准的数据形式,tf源码中他提供了很多net结构,也就是网络结构,这些网络结构都是你输入数据直接就能跑的,而数据格式多种多样不好统一,tf规定的标准数据格式–TFRecords就可以实现这样一件事,只要你把你的数据转化成这个格式,就可以使用tf定义好的网络结构,然后训练你自己的模型。

1. 准备数据

原bolg中使用的数据是DOG VS CAT的数据,可以在download中下载,下载之前需要先注册账号,验证身份还是有点麻烦的,使用自己的数据库也是可以的,只是对于初学者应该把重点放在理解这个过程上,而不是捣鼓数据集,所以建议还是下载一个,不想注册的也可以留下邮箱号我可以发给你。

First, we need to list all images and label them. We give each cat image a label = 0 and each dog image a label = 1. The following code list all images, give them proper labels, and then shuffle the data. We also divide the data set into three train (%60), validation (%20), and test parts (%20).

首先为每张图片对应标签,猫为1狗为0,将匹配好的数据(图像-标签)打乱,按照6/2/2的比例分为训练集,验证集,测试集。

from random import shuffle
import glob

# shuffle the addresses before saving
shuffle_data = True  
cat_dog_train_path = 'Cat vs Dog/train/*.jpg'

# 读取数据
addrs = glob.glob(cat_dog_train_path)
# 打标签
labels = [0 if 'cat' in addr else 1 for addr in addrs] 

# to shuffle data
if shuffle_data:
    c = list(zip(addrs, labels))
    shuffle(c)
    addrs, labels = zip(*c)
    
# Divide the  data into 60% train, 20% validation, and 20% test
train_addrs = addrs[0:int(0.6*len(addrs))]
train_labels = labels[0:int(0.6*len(labels))]
val_addrs = addrs[int(0.6*len(addrs)):int
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值