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 相关文章推荐
python 生成目录树及显示文件大小的代码
Jul 23 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
Python 中使用 PyMySQL模块操作数据库的方法
Nov 10 Python
pycharm运行scrapy过程图解
Nov 22 Python
利用python中集合的唯一性实现去重
Feb 11 Python
最小二乘法及其python实现详解
Feb 24 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
Python实现寻找回文数字过程解析
Jun 09 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
PHP 开发工具
2006/12/06 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
Laravel框架表单验证详解
2014/09/04 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
asp 取文本框名称代码
2008/12/02 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
js星星评分效果
2014/07/24 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
JavaScript中判断数据类型的方法总结
2016/05/24 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
python笔记:mysql、redis操作方法
2017/06/28 Python
python爬虫爬取网页表格数据
2018/03/07 Python
Atom的python插件和常用插件说明
2018/07/08 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
自荐信封面
2013/12/04 职场文书
优秀老师事迹材料
2014/02/05 职场文书
学校对教师的评语
2014/04/28 职场文书
业务内勤岗位职责
2014/04/30 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
超市收银员岗位职责
2015/04/07 职场文书
python利用while求100内的整数和方式
2021/11/07 Python