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 __setattr__、 __getattr__、 __delattr__、__call__用法示例
Mar 06 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
python+splinter自动刷新抢票功能
Sep 25 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
django最快程序开发流程详解
Jul 19 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
python 字典访问的三种方法小结
Dec 05 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
python 基于opencv操作摄像头
Dec 24 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缓存技术介绍
2006/11/25 PHP
PHP中的extract的作用分析
2008/04/09 PHP
Yii学习总结之安装配置
2015/02/22 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
常用python编程模板汇总
2016/02/12 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
Python微信操控itchat的方法
2019/05/31 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
秘书专业自荐信范文
2013/12/26 职场文书
简单租房协议书
2014/10/21 职场文书
单位综合评价意见
2015/06/05 职场文书
2016年教代会开幕词
2016/03/04 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
浅谈Web Storage API的使用
2021/06/23 Javascript
MySQL深分页问题解决思路
2022/12/24 MySQL