TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现


Posted in Python onFebruary 17, 2020

TensorFlow官网给的cifar-10教程,是卷积神经网络入门的好例子,有时想直接拿这个模型来跑自己的数据,却发现他的数据类型不是常见的,我们一般获取的数据(图片)以文件夹分类存好,或者直接在文件名上注明了类别,这时就要通过文件名的来获取标签,显然直接用cifar-10的方式是不行的。

这里当然可以吧数据转化成cifar-10那种类型,不过个人不喜欢这种方式吧。

另一种就还是老办法,对文件名进行处理,获取标签。

其实处理文件名,对python来说,很简单。只是刚接触卷积神经网络的,可能并不熟悉TensorFlow的用法(本人),怎么修改代码才能以这种方式读取数据进队列呢?

看代码:

import tensorflow as tf
import os

#这就是数据所在的路径,其子目录是若干个文件夹,分别对应一类数据,
#文件夹下存放的就是对应那一类的数据。
#命名方式:1,2,3,4····(代表不同的类别,简单粗暴)
path="./data"

classes=2#数据类别的数量
imagesList=[]#存放图片数据的列表(这里存放的仅仅是图片所在的路径,并不是图片)
labelsList=[]#存放标签,与上面图片是一一对应的
filepaths=[os.path.join(path,"%d"%i)for i in range (1,classes+1)]#存放path的子目录的路径
for p in filepaths:
 for filename in os.listdir(p):#获取图片的名字
  imagesList.append(os.path.join(p,filename))#图片名和路径拼接,然后如队列
  labelsList.append(int(p[-1]))#这里是按照命名的方式,p的最后一个字符就是类别

image = tf.cast(imagesList,tf.string)#转化成tf的数据类型
label = tf.cast(labelsList,tf.int64)
queue = tf.train.slice_input_producer([image,label])#生成队列,这里也就关键的地方
label = queue[1]
image_c = tf.read_file(queue[0])
image = tf.image.decode_jpeg(image_c,channels = 3)
training_image_data = tf.image.resize_images(image, [2, 2]) #这个函数是重塑行,具体干嘛不清楚,不用有时报错
example_batch, label_batch = tf.train.shuffle_batch([training_image_data,label], batch_size=1, capacity=2, min_after_dequeue=1) #生成Batch
# 运行Graph 
with tf.Session() as sess: 
 coord = tf.train.Coordinator() #创建一个协调器,管理线程 
 threads = tf.train.start_queue_runners(coord=coord) #启动QueueRunner, 此时文件名队列已经进队。 
 for i in range(6): 
  e_val,l_val = sess.run([example_batch, label_batch]) 
  print (e_val,l_val)#弄些简单的数据来测试效果。

 coord.request_stop() 
 coord.join(threads)

以上这篇TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
python文件特定行插入和替换实例详解
Jul 12 Python
python实现教务管理系统
Mar 12 Python
详解python调用cmd命令三种方法
Jul 08 Python
Python for循环及基础用法详解
Nov 08 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
Python使用openpyxl模块处理Excel文件
Jun 05 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 #Python
Python cookie的保存与读取、SSL讲解
Feb 17 #Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 #Python
Python交互环境下打印和输入函数的实例内容
Feb 16 #Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 #Python
基于python实现微信好友数据分析(简单)
Feb 16 #Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 #Python
You might like
隐藏你的.php文件的实现方法
2007/03/19 PHP
PHP 引用文件技巧
2010/03/02 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
详解python配置虚拟环境
2019/04/08 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
师范生自荐信
2013/10/27 职场文书
初中女生自我鉴定
2013/12/19 职场文书
企业总经理职责
2014/02/02 职场文书
yy生日主持词
2014/03/20 职场文书
公司年会主持词
2014/03/22 职场文书
水利水电专业自荐信
2014/07/08 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
总结会主持词
2015/07/02 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
PHP实现rar解压读取扩展包小结
2021/06/03 PHP